![](/img/trans.png)
[英]How to create a trigger which, update a row in the same table after insert?
[英]Create trigger to update same table after insert
我需要一些幫助來自動忽略表上的一些數據(插入后),以便它不處理這些記錄:
CREATE or REPLACE TRIGGER "user"."trigger_name"
AFTER INSERT ON user.tab
FOR EACH ROW
BEGIN
UPDATE tab
SET :NEW.status = 'DONE'
WHERE :NEW.type not in (1, 2)
AND :NEW.status = 'NEW'
COMMIT;
END trigger_name;
這是一個正確的方法嗎?
非常感謝!
我認為您正在尋找更像這樣的東西,如上所述:
CREATE or REPLACE TRIGGER user.trigger_name
BEFORE INSERT ON user.table
FOR EACH ROW
BEGIN
if :new.status = 'NEW' and :new.type not in (1,2) then
:new.status = 'DONE';
end if;
END trigger_name;
我建議您為列status
添加一個虛擬列,而不是創建數據庫觸發器。 由於您可能會遇到觸發器不自覺地被禁用的情況。 這可能會產生一些符合規則的數據,而其中一些則不符合。 此外,通過這種方式,您將能夠跟蹤原始數據。
因此,請考慮應用以下 DDL 語句
ALTER TABLE tab
ADD (
status2 AS (CASE
WHEN status = 'NEW' AND type NOT IN (1,2) THEN
'DONE'
ELSE
status
END)
);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.