1
想,我有如下表T1
:總和觸發所有插入的值
| type | col1 | col2 |
|------|------|------|
| abc | 0 | 0 |
| def | 0 | 3 |
| abc | 3 | 123 |
| def | 0 | 5 |
| def | 2 | 4 |
定期,一些新的值插入到T1
。我現在想要創建一個觸發器,其中填充另一個表T2
,取決於值插入到T1
。
插入到T2
的值可以使用下面的僞碼計算:
IF col1 = 0 AND col2 = 0
A++
ELSE IF col1 = 0 col2 > 0
B++
ELSE IF col1 > 0
C++
我已經創建了以下觸發:
Create TRIGGER TRI1
ON dbo.T1
FOR INSERT
AS
BEGIN
INSERT INTO dbo.T2
SELECT Sum(CASE WHEN col1 = 0 AND col2 = 0 THEN 1 END) as 'A',
Sum(CASE WHEN col1 = 0 AND col2 > 0 THEN 1 END) as 'B',
Sum(CASE WHEN col1 > 0 THEN 1 END) as 'C'
FROM INSERTED
END
當我與測試:
INSERT INTO dbo.T1 VALUES ('abc',2,3)
INSERT INTO dbo.T1 VALUES ('abc',0,0)
INSERT INTO dbo.T1 VALUES ('def',0,3)
INSERT INTO dbo.T1 VALUES ('abc',0,0)
我得到以下輸出:
| A | B | C |
|------|------|------|
| NULL | NULL | 1 |
| 1 | NULL | NULL |
| NULL | 1 | NULL |
| 1 | NULL | NULL |
但預期產量爲插入操作只有1行:
| A | B | C |
|---|---|---|
| 2 | 1 | 1 |
'INSERT INTO dbo.T1 VALUES('abc',2,3),('abc',0,0)......一次操作。 「插入......;插入...;' - 兩個 – Mike
Yeap ....你的代碼完全按照它應該做的。它爲每個插入產生1行。你期望有什麼不同嗎?或者你是否需要在單個插入語句中插入多行來測試它? –
你有4個插入,所以你有4個不同的操作,以及一個行插入操作。行爲是好的。 –