[英]Value of a unset column in :new pseudorecord before update oracle trigger
我想知道當我沒有顯式更新此列但其他列時before update
oracle 觸發器中的:new
偽記錄中的列的值是什么?
例子:
create table example (cod number(10),name varchar(50),description varchar(50));
update example set description = 'value example' where cod = 1;
如果example
表上有before update
觸發器,那么:new.name
的值是多少? 請記住,我只是在更新description
列。
謝謝
如果
example
表上有before update
觸發器,那么:new.name
的值是多少? 請記住,我只是在更新description
列。
它將包含當前正在更新的行的name
列中的值。
這很容易測試:
create table example (cod number(10),name varchar(50),description varchar(50));
create trigger trg_example
before update on example
for each row
begin
dbms_output. put_line('new name:' || :new.name);
end;
/
insert into example(cod, name, description) values(1, 'foo', 'bar');
-- 1 rows affected
update example set description = 'zoo' where cod = 1;
-- 1 rows affected
dbms_output: new name:foo
如果示例表上有更新前觸發器,那么:new.name 的值是多少? :new.name 將僅包含 name 的現有值。 請參閱下面我嘗試過的示例。
insert into example values(123,'name','dummy desc');
CREATE OR REPLACE TRIGGER example_before_update
BEFORE UPDATE of description
ON example
FOR EACH ROW
DECLARE
description varchar2(10);
name varchar2(50);
BEGIN
-- Update updated_description
description:=:new.description;
name:=:new.name;
dbms_output.put_line( 'description ' || description);
dbms_output.put_line( 'name ' || name);
END;
update example set description = 'newexm' where cod = 123;
output 如下
1 row(s) updated.
description newexm
name name
請參閱以下鏈接以獲取完整示例。 https://livesql.oracle.com/apex/livesql/s/jw4epiekg9l76g2zad19x04pc
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.