我尝试使用触发器,当我插入表penduduk,然后在表muda也将插入,实际上这个触发器是工作,但这个触发器成为循环,当我插入(123)在penduduk,然后再次插入(1234 )然后结果将是(123,1234,123,1234),我是否正确使用'来自penduduk'?或者我应该使用'FROM inserted'?因为当我使用FROM插入时没有结果 我这样的查询
CREATE TRIGGER auto_muda
ON penduduk
FOR INSERT
AS
INSERT INTO muda (noktp,tgl_lahir)
SELECT noktp, tgl_lahir FROM penduduk
WHERE umur < 27
答案 0 :(得分:3)
您目前正在抓取penduduk
的所有匹配行,而不是inserted
逻辑表。您可以将触发器更改为以下内容:
CREATE TRIGGER auto_muda
ON penduduk
FOR INSERT
AS
INSERT INTO muda (noktp,tgl_lahir)
SELECT noktp, tgl_lahir FROM inserted -- Use inserted, not the base table
WHERE umur < 27
来自MSDN:
DML触发器使用已删除和插入的逻辑(概念)表。它们在结构上类似于定义触发器的表,即尝试用户操作的表。已删除和已插入的表包含可由用户操作更改的行的旧值或新值。
答案 1 :(得分:0)
使用
Select noktb, tgl_lahir from inserted
如果您对基于新插入的数据进行插入感兴趣。您的选择似乎能够返回许多项目,这解释了“循环”/重复。