如何在 oracledb 中创建条件?
how do I create a condition in oracledb?
如何在 oracle 数据库上创建条件?我是这个数据库的新手。
我已经创建了名为 vehicle_parked 的 table,但如果 parkedOnSite 值为 'F' 且结构如下
,我想将车辆编号触发为 NULL
vehicle_parked
- parked_id number(4) PK
- arrivalTime date
- parkedOnSite varchar(1) // value will be T/F
- vehicle_number varchar(8)
谢谢。
您可以通过创建一个 DML trigger
来轻松操作您的数据,该 DML trigger
在您的数据插入 table 之前触发并更改数据。
CREATE OR REPLACE TRIGGER trg_vehicle_parked
BEFORE INSERT OR UPDATE
ON vehicle_parked
FOR EACH ROW
DECLARE
BEGIN
if :new.parkedOnSite = 'F' then
:new.vehicle_number := null;
end if;
END;
/
在触发器中,除了:new
,我们还可以使用:old
伪代码。它们代表在(:old
)或之后(:new
)DML 语句发出之前的列的值。
特别是对于 update
或 delete
触发器,您可以在触发器中比较列的旧值和新值,如示例所示:
if ( nvl(:old.vehicle_number,0) != nvl(:new.vehicle_number,0) ) then
go_on_with_statement ....
如何在 oracle 数据库上创建条件?我是这个数据库的新手。 我已经创建了名为 vehicle_parked 的 table,但如果 parkedOnSite 值为 'F' 且结构如下
,我想将车辆编号触发为 NULLvehicle_parked
- parked_id number(4) PK
- arrivalTime date
- parkedOnSite varchar(1) // value will be T/F
- vehicle_number varchar(8)
谢谢。
您可以通过创建一个 DML trigger
来轻松操作您的数据,该 DML trigger
在您的数据插入 table 之前触发并更改数据。
CREATE OR REPLACE TRIGGER trg_vehicle_parked
BEFORE INSERT OR UPDATE
ON vehicle_parked
FOR EACH ROW
DECLARE
BEGIN
if :new.parkedOnSite = 'F' then
:new.vehicle_number := null;
end if;
END;
/
在触发器中,除了:new
,我们还可以使用:old
伪代码。它们代表在(:old
)或之后(:new
)DML 语句发出之前的列的值。
特别是对于 update
或 delete
触发器,您可以在触发器中比较列的旧值和新值,如示例所示:
if ( nvl(:old.vehicle_number,0) != nvl(:new.vehicle_number,0) ) then
go_on_with_statement ....