插入时,如果值为null,则需要编辑该值。我创建一个触发器,但不知道如何编辑插入的表。

ALTER TRIGGER [trigger1] on [dbo].[table]
instead of insert
as
declare @secuencia bigint, @ID_PERSONA VARCHAR;
select @secuencia = SECUENCIA from inserted
select @ID_PERSONA = ID_PERSONA from inserted
if @secuencia is null begin
set inserted.SECUENCIA = NEXT VALUE FOR SEQ_BIOINTEG --(Sequence)
end 发布于 2021-09-08 21:07:50
我不知道如何编辑插入的表。
你不知道。那张桌子是只读的。
请注意您的触发器是如何显示:
代替insert
无法编辑插入的表。
相反,您要做的是为原始表设置一个INSERT命令,使用插入表中的数据筛选插入的行-主要是通过一个联接。
从逻辑上说,更改插入没有任何意义--因为SQL中的触发器是两件事之一:
注意,我说的行-您的触发器有一个非常基本的错误:它假设惰性包含一行。它是一个表--更改可能来自插入多行的insert语句(这很简单,即select into,或简单地说是insert具有多行值的insert)。处理好这些。
从插入中选择@ID_PERSONA = ID_PERSONA
没有任何意义-插入是一个表,所以ID_PERSONA从插入包含什么值,如果插入2行?您必须像对待任何其他表一样对待插入表。
发布于 2021-09-08 22:48:40
除了触发器代码中的所有问题(正如其他人提到的那样)之外,在表中使用SEQUENCE值的最简单方法是将其放在DEFAULT约束中:
ALTER TABLE dbo.[table]
ADD CONSTRAINT DF_table_seq
DEFAULT (NEXT VALUE FOR dbo.SEQ_BIOINTEG)
FOR SECUENCIA;https://stackoverflow.com/questions/69109258
复制相似问题