创建根据其他 table 的列值更新行的触发器
Create trigger that updates row depending on column value from other table
我想创建一个触发器,根据来自其他 table (TABLE1) 的列值更新 table (TABLE2) 中的行.
必须更新哪一行取决于TBL1的ID。
CREATE OR REPLACE TRIGGER INSERT_PAGE
BEFORE UPDATE OR INSERT
ON TABLE1
FOR EACH ROW
BEGIN
IF INSERTING THEN
INSERT INTO TABLE2 (TBL1ID,STEP,PAGE) VALUES
(:NEW.TBL1ID,:NEW.STEP,15);
ELSIF UPDATING and :NEW.STATE='APPROVED' THEN
UPDATE TABLE2
SET PAGE=16 AND STEP1='TEXT123'
WHERE TBL1ID =TABLE1.TBL1ID;
END IF;
END;
谁能帮我创建一个带有更新语句的触发器?
这也是一个好方法吗?
所以我有两个 table,table1 中的列状态在整个过程中不断变化。
根据 state 列从 table1 的变化,我想更改或更好地说更新 [=24] 中的行=]table 2 并在 Table 2 中设置一些列,如 PAGE 和 STATE 取决于Table 1 中的列值 STATE。
我不希望每次更新 TABLE 1 时都创建一个新行,只应更新相应的行。
据我了解,只有当 table1 中的状态更改为 'approved' 时,您才想更新 table2,如果在 table1 中插入了一行,触发器将在 table2 中插入该行。
我已对您的代码进行了一些更正。如果这不是您想要的,请告诉我。
CREATE OR REPLACE TRIGGER INSERT_PAGE
BEFORE UPDATE OR INSERT
ON TABLE1
FOR EACH ROW
DECLARE
BEGIN
IF INSERTING THEN
INSERT INTO TABLE2 (TBL1ID,STEP,PAGE) VALUES
(:NEW.TBL1ID,:NEW.STEP,15);
ELSIF UPDATING THEN
IF :NEW.STATE = 'APPROVED' THEN
UPDATE table2 t2 SET
STATE = :NEW.STATE, PAGE=16, STEP1='TEXT123'
WHERE t2.TBL1ID = :OLD.TBL1ID;
END IF;
END IF;
END;
我想创建一个触发器,根据来自其他 table (TABLE1) 的列值更新 table (TABLE2) 中的行. 必须更新哪一行取决于TBL1的ID。
CREATE OR REPLACE TRIGGER INSERT_PAGE
BEFORE UPDATE OR INSERT
ON TABLE1
FOR EACH ROW
BEGIN
IF INSERTING THEN
INSERT INTO TABLE2 (TBL1ID,STEP,PAGE) VALUES
(:NEW.TBL1ID,:NEW.STEP,15);
ELSIF UPDATING and :NEW.STATE='APPROVED' THEN
UPDATE TABLE2
SET PAGE=16 AND STEP1='TEXT123'
WHERE TBL1ID =TABLE1.TBL1ID;
END IF;
END;
谁能帮我创建一个带有更新语句的触发器? 这也是一个好方法吗?
所以我有两个 table,table1 中的列状态在整个过程中不断变化。 根据 state 列从 table1 的变化,我想更改或更好地说更新 [=24] 中的行=]table 2 并在 Table 2 中设置一些列,如 PAGE 和 STATE 取决于Table 1 中的列值 STATE。 我不希望每次更新 TABLE 1 时都创建一个新行,只应更新相应的行。
据我了解,只有当 table1 中的状态更改为 'approved' 时,您才想更新 table2,如果在 table1 中插入了一行,触发器将在 table2 中插入该行。
我已对您的代码进行了一些更正。如果这不是您想要的,请告诉我。
CREATE OR REPLACE TRIGGER INSERT_PAGE
BEFORE UPDATE OR INSERT
ON TABLE1
FOR EACH ROW
DECLARE
BEGIN
IF INSERTING THEN
INSERT INTO TABLE2 (TBL1ID,STEP,PAGE) VALUES
(:NEW.TBL1ID,:NEW.STEP,15);
ELSIF UPDATING THEN
IF :NEW.STATE = 'APPROVED' THEN
UPDATE table2 t2 SET
STATE = :NEW.STATE, PAGE=16, STEP1='TEXT123'
WHERE t2.TBL1ID = :OLD.TBL1ID;
END IF;
END IF;
END;