Если я определяю таблицы a
и b
следующим образом:
CREATE TABLE a(i integer);
ALTER TABLE a ADD CONSTRAINT pkey_a PRIMARY KEY (i);
CREATE TABLE b(j integer);
ALTER TABLE b add CONSTRAINT fkey_ij FOREIGN KEY (j)
REFERENCES a (i) MATCH SIMPLE
ON UPDATE CASCADE ON DELETE CASCADE;
INSERT INTO a(i) VALUES(1);
И затем сделайте следующее:
START TRANSACTION;
SET CONSTRAINTS ALL DEFERRED;
INSERT INTO b(j) VALUES(2);
INSERT INTO a(i) VALUES(2);
COMMIT;
Он выдает ошибку ниже. Почему SET CONSTRAINTS
не имеет желаемого эффекта?
ОШИБКА: вставка или обновление в таблице "b" нарушает ограничение внешнего ключа "Fkey_ij"
Состояние SQL: 23503 Деталь: Ключ (j) = (2) отсутствует в таблице "a".