[英]SQL - Update, Insert Or Instead of Trigger?
如果將值更新或插入表中的字段之一,我想檢查該值是否不包含某些字符。 如果是這樣,請勿插入任何內容。 我做了這個“代替”觸發器, 但它僅適用於插入的行,不適用於更新的行 。 我做錯了什么? 我是否為此任務選擇了合適的觸發器?
ALTER TRIGGER trg_MakeSureOfCleanDescription
ON [dbo].[Car]
instead OF INSERT
AS
BEGIN
DECLARE @CharPosition_Inserted INT;
SET @CharPosition_Inserted = 0;
DECLARE @CharPosition_Updated INT;
SET @CharPosition_Updated = 0;
SELECT @CharPosition_Inserted = CHARINDEX('<', inserted.Description)
FROM inserted
--select @CharPosition_Updated = CHARINDEX('<', inserted.Description) from
IF( @CharPosition_Inserted = 0/*and @CharPosition_Updated = 0*/ )--only if the description is html free, insert it. Otherwise don't insert nothing.
BEGIN
PRINT 'no html. inserting.'
INSERT INTO Car
([Year],
[Make],
[Model],
[Price],
[ExtColor],
[IntColor],
[Body],
[Engine],
[Transmission],
[Miles],
[VIN],
[Description],
[MainImage],
[VideoFile],
[StockNumber],
[Sold])
SELECT [Year],
[Make],
[Model],
[Price],
[ExtColor],
[IntColor],
[Body],
[Engine],
[Transmission],
[Miles],
[VIN],
[Description],
[MainImage],
[VideoFile],
[StockNumber],
[Sold]
FROM inserted
END
END
謝謝。
我的代碼:
您僅在檢查插入操作。 更新的處理方式完全不同,必須在單獨的觸發器中進行處理。 由於存在用於插入的Before和After觸發器,因此也存在用於Update和Delete的Before和After觸發器。 在您的情況下,您需要為更新方案創建另一個觸發器。
https://technet.microsoft.com/zh-cn/library/ms188601%28v=sql.105%29.aspx
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.