【问题标题】:I need to modify default value of some columns我需要修改一些列的默认值
【发布时间】:2017-02-08 17:49:05
【问题描述】:

我必须为 Oracle 创建一个架构,为 SQL Server 创建另一个架构。是使用alter table 修改默认值(日期)更好,还是应该使用触发器,因为Oracle 使用SYSDATE 而SQL Server 使用GETDATE()

【问题讨论】:

  • 即使语法不同,创建或修改默认值也比使用触发器更好。如果您对默认值使用不同的语法,有什么缺点? (您可能已经知道触发器的缺点。)
  • 和触发器的语法不一样?
  • 听起来不错,我只想知道哪个更好,因为我已经为所有需要默认值的列(DATE)创建了“ALTER TABLE”。
  • 我已经修改了所有 DATE 类型的列的默认值,因为 SQL 模式是由我的 ORM 自动生成的,并且列的默认值(DATE)在 SQL Server 和 Oracle 之间是不同的。
  • 如果您创建架构,为什么需要alter table?如果您修改架构,是否要维护触发器?

标签: sql sql-server database oracle


【解决方案1】:

我认为通常最好使用默认值,而不使用触发器(我的意见是仅在绝对必要时才使用触发器)。此外,MSSQL 和 ORACLE 的触发器差异比使用 DEFAULT SYSDATE 而不是 DEFAULT GETDATE() 更需要注意。

另一方面,仅当您不使用插入命令传递任何值时才会使用默认值:使用触发器您可以根据需要更改值。

我面临着类似的问题(我们有两个 DB 版本,MSSSQL 和 ORACLE,用于同一个应用程序),在这种情况下,我们使用 DEFAULT 值作为插入日期(例如,列 DATA_INS)并触发更新日期(列DATA_UPD) 的记录。

【讨论】:

    猜你喜欢
    • 2020-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多