插入没有值的行以获取生成的id

时间:2014-09-26 18:06:51

标签: sql postgresql sql-insert

我想插入一行,这样我就可以获得生成的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,因此可以由DB自动生成。

INSERT INTO "TypeOfDog" (NULL) VALUES (NULL) RETURNING id;

这样的东西

我正在使用postgreSQL。

感谢。

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

经过一些测试后,我找到了一种方法。

如果不指定列和值,则无法插入行。为了绕过这个并且在不强制id的情况下检查行,我使用了 DEFAULT 关键字。

这是sql:INSERT INTO "TypeOfDog" VALUES (DEFAULT) RETURNING id;

希望这有助于其他人。