【发布时间】:2015-01-23 16:28:24
【问题描述】:
我在 Oracle PL/SQL 方面有一些经验,我现在正在学习 MS SQL。 我遇到了以下情况:
在表中插入时,要自动插入到 columnA 中的值必须被覆盖为 MAX(columnA) + 1
在 Oracle 中,我可以使用“插入前”触发器轻松完成此操作。
在 MS Sql 中,似乎应该通过“而不是插入”触发器来模拟之前。
我的问题是:比如说,我在“代替插入触发器”中编写了一个新的插入语句,其中包含此 columnA 的 max+1。
如果在以后某个时间点将一列添加到表中,我在触发器中的插入查询将不会有此列,除非有人记得更新触发器。
这是一个正确的假设吗?
有没有更好的方法来实现这一点?
编辑:假设此列中的数字可以任意调整。
【问题讨论】:
-
为什么不是标识列,或者sequence
-
@tschmit007:我同意,但是假设该列也发生了其他操作。序列会“不同步”。据我所知,无法编辑身份列。我想继续使用触发器
-
那么你测试添加新列了吗?