我已經創建了一個觸發器,但它沒有按我的意愿作業。例如,我想確保提交的 order_limits 應該在 1-10 之間,并且應該適用于插入和更新。但我無法弄清楚如何使它與更新和插入一起作業。任何人都可以幫助我嗎?謝謝
CREATE TRIGGER trRestrictRange
ON DATABASE
FOR ALTER_TABLE
AS
BEGIN
ALTER TABLE Order
ADD CONSTRAINT const_range CHECK (order_limits >=1 AND order_limits <= 10 );
END
uj5u.com熱心網友回復:
如果您“必須”使用觸發器(沒有充分理由“必須”),那么您需要使用 DML 觸發器,而不是 DDL 觸發器,并檢查inserted偽表中的資料。然后,如果表中存在資料,則THROW報錯:
CREATE TRIGGER Chktrg_OrderRange ON dbo.YourTable
AFTER INSERT AS
BEGIN
IF EXISTS (SELECT 1
FROM inserted i
WHERE order_limits < 1
OR order_limits > 10)
THROW 98765, N'The Trigger check Chktrg_OrderRange on the table ''dbo.YourTable'' failed. The column ''order_limits'' must be more than or equal to one and less than or equal to 10.', 16;
END;
當然,正如我所說,沒有充分的理由這樣做,您應該改為使用CHECK CONSTRAINT:
ALTER TABLE dbo.YourTable ADD CONSTRAINT chk_OrderRange
CHECK (order_limits >= 1 AND order_limits <= 10);
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/528463.html
標籤:sqlsql服务器触发器
上一篇:火星之旅受阻
