1

我尝试使用触发器,当我在表 penduduk 中插入时,然后在表 muda 中也会插入,实际上这个触发器是工作的,但是这个触发器变成了循环,当我在 penduduk 中插入(123)时,然后再次插入(1234)然后结果将是 (123,1234,123,1234) ,我可以使用“From penduduk”吗?还是我应该使用“从插入”?因为当我使用 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
4

2 回答 2

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 触发器使用删除和插入的逻辑(概念)表。它们在结构上类似于定义触发器的表,即尝试用户操作的表。删除和插入的表保存可能由用户操作更改的行的旧值或新值。

于 2013-05-10T14:42:34.750 回答
0

利用

Select noktb, tgl_lahir from inserted

如果您有兴趣根据新插入的数据进行插入。您的选择似乎能够按原样返回许多项目,这解释了“循环”/重复。

于 2013-05-10T14:42:51.207 回答