4

在我的 SAP 应用程序的上下文中,我向现有表添加了一个列,并希望为其定义一个默认值,以便使用该表的旧代码(尤其是插入行的代码)不必关心新列 - 我希望它自动填充预定义的默认值(当然只有在没有指定值的情况下)。

后面的数据库系统是 Oracle-DB,尽管我只能通过 SAP-GUI 和 ABAP-SQL 访问它。

由于我们公司的 SAP 专家不知道这是否可能,我想也许这里有人会。那么 - 这是可能的吗?如果是的话 - 怎么样?

编辑 - 请求 的场景详细信息:场景实际上非常简单:我们的应用程序有一个用户表,其中包含标准用户内容(名称、一些设置、ID、部门、一堆标志等),我添加了一个列来存储一个简单的设置(用户为他的网络界面选择的设计)。它只包含一个名称(字符 40)。这就是我上面谈到的专栏,我希望它的默认值是“默认设计”。

4

2 回答 2

3

请不要考虑在数据库级别上执行此操作。严重地。直接对数据库层所做的更改在系统内部将不可见,并导致各种奇怪的副作用,这将是一场噩梦。此外,更改和传输系统不会接收您的更改 - 您必须手动更新 QA 和生产系统。

如果可能的话,我建议以中性字段值(空格、零等)与您的默认值相对应的方式选择您的域值。如果这不可能,请详细描述您的场景以获得更具体的答案。


SAP R/3 / ABAP 环境不提供为列添加默认值的选项。您只能选择NULL在添加列时强制系统填充非默认值,但这通常不是一个好主意。修改所有数据并插入默认值需要时间,并且根据表的大小和重要性,这可能会导致生产中断。使用默认值填充字段必须由应用程序服务器执行,而不是数据库。在您的情况下,我只需在读取访问模块中添加逻辑,例如

IF my_user-ze_design IS INITIAL.
  my_user-ze_design = co_ze_default_design.
ENDIF.
于 2013-04-26T16:43:20.750 回答
0

您可以为添加到表中的列定义默认值 - 如果您的数据库是 Oracle 11g(或更高版本),Oracle 引入了“仅字典添加列”,这意味着默认值元数据仅存储在字典中 - 因此现有记录不会需要使用默认值进行更新,并且没有开销,无论表有多大。

于 2014-05-29T14:16:08.807 回答