2014-09-26 39 views
1

我想插入一行,所以我可以得到生成的ID。插入一行沒有值得到生成的ID

我有一個名爲「TypeOfDog」的列「id:smallserial」(自動生成的ID)。 我有另一個名爲「TypeOfDogLang」的表「id:smallint」(pk + fk到TypeOfDog的id),「lang」(pk)和「name」(不同語言的名稱)。

+-----------------------+ 
|  TypeOfDog  | 
+-----------------------+ 
| id | smallserial | pk | <-- Insert here 
+----+-------------+----+ 

+--------------------------+ 
|  TypeOfDogLang  | 
+--------------------------+ 
| id | smallint | pk, fk | 
+------+----------+--------+ 
| lang | text  | pk  | 
+------+----------+--------+ 
| name | text  | nn  | 
+------+----------+--------+ 

我想插入「TypeOfDog」行不強制ID,以便它可以通過數據庫自動生成。

喜歡的東西INSERT INTO "TypeOfDog" (NULL) VALUES (NULL) RETURNING id;

我使用PostgreSQL。

謝謝。

回答

2
INSERT INTO "TypeOfDog" VALUES (default) RETURNING id; 
1

經過一些測試後,我想出了一個辦法。

如果不指定列和值,則不能插入行。爲了繞過這一點,並在不強制ID的情況下插入行,我使用了DEFAULT關鍵字。

這裏的SQL:INSERT INTO "TypeOfDog" VALUES (DEFAULT) RETURNING id;

希望這會幫助別人。