我想插入一行,这样我就可以获得生成的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。
感谢。
答案 0 :(得分:2)
INSERT INTO "TypeOfDog" VALUES (default) RETURNING id;
答案 1 :(得分:1)
经过一些测试后,我找到了一种方法。
如果不指定列和值,则无法插入行。为了绕过这个并且在不强制id的情况下检查行,我使用了 DEFAULT 关键字。
这是sql:INSERT INTO "TypeOfDog" VALUES (DEFAULT) RETURNING id;
希望这有助于其他人。