У меня возникли проблемы с созданием таблицы в Oracle Oracle.Oracle SQL установка одиночного уникального символа
Я искал колонку под названием DEFAULTRULE. Только 1 строка в этом столбце может быть «1» в любой момент времени. Так, например
ID DEFAULTRULE
1 0
2 0
3 1
Если бы я должен был обновить ID 2, чтобы иметь правила по умолчанию = 1, то это будет либо установить ID 3 правила по умолчанию 0
или
выдаст ошибку (я не» т возражаю до тех пор, пока существует только один «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;
ли кто-нибудь сможет указать меня в правильном направлении? Спасибо заранее. Jon
Thank you kordirko. Очень ценю помощь и безумно быстрый ответ! Я как раз собирался обновить это после обнаружения: http://dba.stackexchange.com/questions/4815/how-to-implement-a-default-flag-that-can-only-be-set-on- a-single-row Не думал, что любой бы ответил так быстро! Это работает как шарм: D –