如何在表格中插入新行,以获取下一个主键

时间:2018-02-25 16:57:48

标签: sql postgresql

我是Postgres SQL的新手,非常感谢您提供一些帮助。我有一个名为actors的大型数据集,包括一个主键(nconst),演员的名字,他们的出生和死亡年份。我想在此数据集中插入一个actor的新行,这将使下一个nconst可用。

因此我运行了我的代码

INSERT INTO actors (name, birth_year, death_year)
VALUES (‘Jo Jo Slim’ ,1962, NULL);

但是,我在列中返回错误说明空值,'nconst'违反了非空约束。

由于数据集很大,我无法知道下一个可用的nconst是什么。因此,我如何添加这一行数据并告诉Postgres SQL只生成下一个可用的nconst?非常感谢你。

下面是我的数据集的一行。

nconst   | name | birth_year | death_year     
" nm0000001 ", "Miss Jerry " , " 1940" , "2000"

1 个答案:

答案 0 :(得分:1)

将主键定义为serial值:

create table actors (
    actorid serial primary key,
    name varchar(255),
    . . .
);

然后插入表格 - 除了id:

之外的所有列
INSERT INTO actors (name, birth_year, death_year)
    VALUES ('Jo Jo Slim', 1962, NULL);

值为整数,而不是字符串。但这是主键的不错选择。

我建议将列命名为actorid,以便了解其含义。 nconst并不意味着什么,至少对我而言。