2
我試圖執行e觸發器,它執行但它沒有做我想做的事。UPDATE TRIGGER?
確定這些表,我需要兩個表吧
create table Properties(
idProperties number(20) NOT NULL,
Typee varchar2(20) NOT NULL,
SquareMeters varchar2(20) NOT NULL,
Rooms number(20) NOT NULL,
ConstructionDate date NOT NULL,
FloorLocation varchar(20),
Price number(20) NOT NULL,
CityView varchar2(20),
DateOfInsert date NOT NULL,
DateOfExiration date NOT NULL,
Address_FK number(20),
Service_FK number(20),
OwnerAgent_FK number(20),
Status_FK number(20),
PropertyService_FK number(20))
create table Status(
idStatus number(20) NOT NULL,
statustype varchar2(20))
這是觸發
CREATE OR REPLACE TRIGGER Property_Update
AFTER UPDATE ON Properties REFERENCING OLD AS OLD NEW AS NEW
FOR EACH ROW
BEGIN
DECLARE
val_new VARCHAR2(20);
val_app VARCHAR2(20);
BEGIN
select idstatus into val_new from status where STATUSTYPE='New';
select idstatus into val_app from status where STATUSTYPE='Approved';
IF :OLD.status_fk=val_new AND :NEW.status_fk=val_app THEN
UPDATE Properties SET DateOfExiration=(sysdate+90) WHERE
idProperties= :NEW.idProperties;
END IF;
END;
END;
我想更新SYSDATE + 90時statustype從「新」改爲'批准」
我更新它
update properties set status_fk = 2 where idproperties = 12;
它會更改表屬性上的forieng鍵status_fk,但它不會將到期日期更新爲sysdate + 90?
任何想法爲什麼會發生這種情況?
另一方面,每次都必須從'status'中選擇以獲得'new'的ID等等,這是使用代理變得瘋狂的代理! –
你可以刪除你的外部'begin ... end'組合。沒有必要。 – Ben