में अपेक्षा के अनुरूप इस प्रकार अगर मैं टेबल a
और b
को परिभाषित:बाध्यताएं निर्धारित सभी काम नहीं कर टाल PostgreSQL 9.3
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
क्यों वांछित प्रभाव नहीं है?
ERROR: insert or update on table "b" violates foreign key constraint "fkey_ij"
SQL state: 23503 Detail: Key (j)=(2) is not present in table "a".
मामलों में जहां आप जैसे हैं, उसके लिए एक वैकल्पिक समाधान बैकअप को पुनर्स्थापित करना ट्रिगर को अक्षम करना होगा। देखें: http://stackoverflow.com/q/3942258/1157054 – Ajedi32