1
我已經創建了一個簡單的表並向其中插入了一些值。然後,我創建了一個觸發器來阻止任何名爲'John'的人插入一個值,並且還有人已經回答了這個問題。 我的問題是,當我插入新值時,查詢成功執行,但表不會更新。觸發器創建後SQL表不顯示插入的數據
CREATE TABLE user_reponse(
Username VARCHAR(50),
QuestionID VARCHAR(10),
Answer CHAR(1)
)
INSERT INTO user_reponse VALUES
('Tom', 'Q001', 'D'), ('Wendy', 'Q009', 'A'), ('Eddy', 'Q089', 'C'), ('David', 'Q001', 'C'),
('Eve', 'Q001', 'D'), ('Paul', 'Q001', 'A'), ('Sam', 'Q001', 'B')
CREATE TRIGGER [dbo].[insert_instead_of]
ON [dbo].[user_reponse]
INSTEAD OF insert
AS
IF (SELECT Username FROM inserted) = 'John'
BEGIN
RAISERROR('You have not paid up your fee', 16, 1)
SELECT * FROM inserted
ROLLBACK
END
IF EXISTS(SELECT a.Username, b.Username FROM user_reponse a, inserted b WHERE a.Username = b.Username)
BEGIN
RAISERROR('You have already submitted this question', 16, 1)
ROLLBACK
END
INSERT INTO user_reponse VALUES
('John', 'Q001', 'D')
INSERT INTO user_reponse VALUES
('zzz', 'Q002', 'A')
SELECT * FROM user_reponse
使用'插入更新後' – 2014-09-03 06:38:33
您是否在說'sql',你的意思是微軟'sql-server'?請更新您的標籤以包含您正在使用的**實際,具體數據庫** - 「sql」僅僅是查詢語言,由許多RDBMS使用 - 但觸發器是高度特定於供應商的,因此我們需要知道具體您正在使用 – 2014-09-03 06:42:47
解決數據庫系統 - 我需要添加一個ELSE statment後的IF插入ELSE \t \t插入的行BEGIN \t \t INSERT INTO user_reponse \t \t SELECT * FROM插入 \t END – 2014-09-03 07:19:20