0
我創建了觸發器check_id
。 具有觸發我希望的情況下,當我做User
一個插入與Id = 4
這樣就User
回滾一個Insert
聲明的User.Id = 4
回滾觸發器
但是:
INSERT INTO USER (Id, Name)
VALUES (4, 'Emmanuel')
我得到一個錯誤:
Rollback not available in an atomic process
我該怎麼做?如何在觸發器中回滾INSERT?
是,所有的代碼?無法重現看到[SqlFiddle](http://sqlfiddle.com/#!6/49123/1/0),當取消註釋時你會得到'「事務在觸發器中結束,批處理已被中止。作爲關鍵字是非常糟糕的做法 – lad2025
你的觸發器**主要**缺陷,你似乎認爲它會被稱爲**每行**一次 - 這是**不是**的情況。觸發器將在每個語句**中觸發一次**,因此如果您的INSERT語句影響25行,您將觸發**一次**,但是「插入」將包含25行。您的代碼在這25行中選擇哪一個? '從插入的SELECT ID' - 它是非確定性的,你得到*一個arbtitrary *行,並且所有其他24個被**忽略**。你需要重寫你的觸發器來考慮這個問題! –
秒作爲marc_s建議它不會與多行的工作見INSERT INTO [用戶](Id,Name)VALUES(4,'Emmanuel'),(5,'AAA');' – lad2025