1

テーブル penduduk に挿入するときにトリガーを使用しようとすると、テーブルに muda も挿入されます。実際にはこのトリガーは機能しますが、このトリガーはループになり、penduduk に (123) を挿入し、再度挿入 (1234) すると、結果は (123,1234,123,1234) になりますが、'From penduduk' を使用してもよろしいですか? または、「FROM 挿入」を使用する必要がありますか? 挿入された 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 に答える