У меня возникли проблемы с созданием таблицы в Oracle SQL.
Я искал столбец под названием DEFAULTRULE. Только 1 строка в этом столбце может быть «1» в любой момент времени. Так например
ID DEFAULTRULE
1 0
2 0
3 1
Если бы я обновил ID 2, чтобы иметь правило по умолчанию = 1, то он либо установил бы правило ID 3 по умолчанию на 0
or
выдать ошибку (я не возражаю, если есть только одна «1»)
Я попытался создать триггеры, чтобы сделать оба, но продолжаю получать
Таблица ORA-04091 видоизменяется, триггер/функция может ее не видеть.
2 мои попытки:
CREATE OR REPLACE TRIGGER CHECKDEFAULTRULE
BEFORE UPDATE ON BUSINESS_RULE
FOR EACH ROW
DECLARE
v_count NUMBER(1);
BEGIN
IF :NEW.DEFAULTRULE = 1 THEN
SELECT COUNT(DEFAULTRULE)INTO v_count FROM BUSINESS_RULE WHERE DEFAULTRULE = 1;
IF v_count != 0 THEN
RAISE_APPLICATION_ERROR(-20000,'BUSINESS_RULE already has a default rule. Please set this to 0 and try again');
END IF;
END IF;
END;
и
CREATE OR REPLACE TRIGGER CHECKDEFAULTRULE
BEFORE UPDATE ON BUSINESS_RULE
FOR EACH ROW
BEGIN
IF :new.DEFAULTRULE = 1 THEN
UPDATE BUSINESS_RULE
SET DEFAULTRULE = 0;
WHERE DEFAULTRULE = 1;
END IF;
END checkDefaultForOne;
Кто-нибудь сможет указать мне правильное направление? Заранее спасибо. Джон