我已經創建了此觸發器,但是當我嘗試插入或更新記錄時,此代碼無法正常作業。例如,當我嘗試將記錄插入到客戶表中不存在的客戶 id 的訂單表中時,然后它應該顯示訊息“是”而不是“否”。只需要你幫助檢查我哪里錯了。謝謝
CREATE TRIGGER trg_checkKey
ON ORDER
AFTER INSERT, UPDATE
AS
BEGIN
IF EXISTS (SELECT 1
FROM inserted
JOIN
(SELECT ID FROM Order
UNION ALL
SELECT ID FROM Customer) Order_Customer ON Order_Customer.ID = inserted.ID)
BEGIN
PRINT 'Yes';
END
ELSE
BEGIN
PRINT 'NO'
END
-- 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
uj5u.com熱心網友回復:
從評論來看,這似乎是另一個試圖讓方形釘穿過圓孔的例子。就像在您的其他問題中一樣,這不是 aTRIGGER的用途;CONSTRAINTs 是您需要使用的。
你應該在FOREIGN KEY CONSTRAINT這里使用。停止濫用TRIGGERs; 它們不適用于可以通過內置功能解決的問題:
ALTER TABLE dbo.[Order] ADD CONSTRAINT FK_OtherTable_YourTable_ID --ORDER is a reserved keyword, don't use it for object names
FOREIGN KEY (ID) REFERENCES dbo.Customer (ID); --If the Customer is the ID, what is the ID for the Order called?
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/528460.html
標籤:sql服务器触发器
上一篇:當層次結構鍵更改每一行SQLServer時如何決議JSON列
下一篇:兩個值的T-SQL隨機輸出
