我創建了這兩個表:如何獲得子表的外鍵具有相同的值作爲父母的首要自動增量鍵
CREATE TABLE Purchase(
purchaseID SERIAL,
custName VARCHAR(30) NOT null,
PRIMARY KEY (purchaseID));
CREATE TABLE PurchasedItem(
purchaseID INT,
itemNo INT NOT NULL,
PRIMARY KEY (purchaseID, itemNo),
FOREIGN KEY (purchaseID) REFERENCES Purchase(purchaseID));
接下來我希望將數據插入到兩個表,與purchaseID外鍵採購表格中與PurchaseID Serial具有相同值的採購項目。
我使用的是一個名爲PSequel的PostgreSQL客戶端。我試圖設置AUTOCOMMIT首先在客戶端,所以我可以在同一個事務中有兩個INSERT語句,但客戶端不識別「autocommit」,所以我在終端中嘗試了它,我認爲它工作...反正這些是我嘗試的兩個INSERT語句。
INSERT INTO Purchase(custName) VALUES ('Lendl');
INSERT INTO PurchasedItem(purchaseID, itemNo) VALUES (DEFAULT, 111);
commit;
不過,我得到一個錯誤:
ERROR: null value in column purchaseID violates not-null constraint.
這是指PurchasedItem的purchaseID在運行它本身工作的第一INSERT語句。我該如何解決這個問題?
這些都工作完美:)是否有任何優勢使用非此即彼? –
@IvanLendl'lastval()'只有在兩次插入之間的事務中沒有發生任何事情時纔會起作用。否則,他們三人的工作原理是一樣的 - 這是個人品味的問題 –
如果我想放入一個不屬於序列的屬性,該怎麼辦?那麼我怎樣才能從一張桌子到另一張桌子呢? –