Практика вопрос иностранного выглядит следующим образом:Использование триггера вместо ключа
Реализация триггеров, которые выполняют ту же функцию, что и следующие ограничения внешнего ключа:
ALTER TABLE Sample ADD CONSTRAINT sample_fk
FOREIGN KEY (tissue_type_id)
REFERENCES Tissue_Type(tissue_type_id);
Где tissue_type_id
является атрибутом в обеих таблицах Sample
и tissue_type
.
После формата от
Using a trigger to implement a foreign key check constraint
До сих пор у меня есть:
CREATE OR REPLACE TRIGGER tissue_type_inck
BEFORE INSERT ON SAMPLE
FOR EACH ROW
BEGIN
DECLARE
tissueType tissue_type.tissue_type_id%TYPE;
SELECT TISSUE_TYPE_ID
INTO tissueType
FROM TISSUE_TYPE
WHERE TISSUE_TYPE_ID=:NEW.TISSUE_TYPE_ID;
IF :NEW.TISSUE_TYPE_ID != tissueType THEN
RAISE_APPLICATION_ERROR(-20001,'INVALID TISSUE TYPE');
END IF;
END;
/
Я получаю ошибку компиляции:
Warning: Trigger created with compilation errors.
Где я буду неправильно? Извините за форматирование и спасибо!
Хорошо, я вам на самом деле на Oracle, я сделал обновление моего поста – Blag
После устранения триггера для вставки, не забудьте внешние ключи также связаны с обновлениями (а также с обновлениями и удалениями в таблице PK). – mathguy