я хочу сделать значения двух столбцов в разных таблицах взаимоисключающими
Таблица 1 (ЖИВОТНЫЕ):
CREATE TABLE "ANIMAL"
( "ANIMALID" NUMBER GENERATED BY DEFAULT AS IDENTITY MINVALUE 1 MAXVALUE 9999999999999999999999999999 INCREMENT BY 1 START WITH 1 CACHE 20 NOORDER NOCYCLE NOKEEP NOSCALE NOT NULL ENABLE,
"NAME" VARCHAR2(255) NOT NULL ENABLE,
"TYPEFK" NUMBER NOT NULL ENABLE,
"BREEDFK" NUMBER,
"DATEOFBIRTH" DATE,
"SEX" CHAR(1) NOT NULL ENABLE,
"ADMITTANCEDATE" DATE NOT NULL ENABLE,
"AVAILABLETOFOSTER" CHAR(1) NOT NULL ENABLE,
CONSTRAINT "ANIMAL_PK" PRIMARY KEY ("ANIMALID")
USING INDEX ENABLE
)
/
Таблица 2 (FOSTERAPPLICATION):
CREATE TABLE "FOSTERAPPLICATION"
( "APPLICATIONID" NUMBER GENERATED BY DEFAULT AS IDENTITY MINVALUE 1 MAXVALUE 9999999999999999999999999999 INCREMENT BY 1 START WITH 1 CACHE 20 NOORDER NOCYCLE NOKEEP NOSCALE NOT NULL ENABLE,
"APPLICANTFK" NUMBER NOT NULL ENABLE,
"ANIMALFK" NUMBER NOT NULL ENABLE,
"DATEOFAPPLICATION" DATE NOT NULL ENABLE,
"REASONOFAPPLICATION" BLOB NOT NULL ENABLE,
"APPLICATIONAPPROVED" CHAR(1),
CONSTRAINT "FOSTERAPPLICATION_PK" PRIMARY KEY ("APPLICATIONID")
USING INDEX ENABLE
)
/
у меня есть два триггера:
Триггер 1 (test_trig): 'AVAILABLETOFOSTER' = 'N', когда APPLICATIONAPPROVED = 'Y'
CREATE OR REPLACE TRIGGER test_trig
AFTER INSERT OR UPDATE ON FOSTERAPPLICATION
FOR EACH ROW
BEGIN
UPDATE ANIMAL
SET AVAILABLETOFOSTER = 'N'
WHERE :NEW.APPLICATIONAPPROVED = 'Y'
AND :NEW.ANIMALFK = ANIMALID;
END test_trig;
/
Триггер 2 (test_trig2): APPLICATIONAPPROVED = 'N', когда AVAILABLETOFOSTER = 'Y'
CREATE OR REPLACE TRIGGER test_trig2
AFTER INSERT OR UPDATE ON ANIMAL
FOR EACH ROW
BEGIN
UPDATE FOSTERAPPLICATION
SET APPLICATIONAPPROVED = 'N'
WHERE :NEW.AVAILABLETOFOSTER = 'Y'
AND :NEW.ANIMALID = ANIMALFK;
END test_trig2;
/
концепция такова: заявка на приют животного может быть одобрена (сделано «Y») только в том случае, если животное доступно для приюта в первую очередь, и наоборот
я хочу, чтобы изменение значений запускалось автоматически, но я получаю мутирующую ошибку. я понимаю, что ошибка возникает из-за того, что я использую "UPDATE" в своем триггере... как-нибудь обойти это?