sql - 将行插入仅包含主键字段的表

标签 sql postgresql primary-key auto-increment sql-insert

谷歌搜索告诉我尝试这个:

insert into Plan default values;

但是我得到了:

null value in column "id" violates not-null constraint

或者这个:

insert into Plan (id) values (null);

但我也得到了同样的结果。

这些示例是针对 SQL 的:PostgreSQL 有什么不同吗?

表结构:

  create table Plan (
    id int4 not null,
    primary key (id)
); 

最佳答案

您的列不接受 NULL 值(定义非空),并且您也没有定义默认值。因此,您必须提供一个整数值:

insert into plan (id) values (1235); -- any integer value

很可能您确实想要一个serial列,它从序列中提取默认值:

您的表格可能如下所示:

CREATE TABLE plan (plan_id serial PRIMARY KEY); 

INSERT 可能是:

INSERT INTO plan DEFAULT VALUES;

关于sql - 将行插入仅包含主键字段的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28310462/

相关文章:

c# - 如何在存储过程中将 DateTime 格式传递给 MS sql server?

c# - 如何正确解析 SQL CREATE TABLE 语句

json - 如何使用 mongodb_fdw 将动态 JSON 对象绑定(bind)到 PostgreSQL?

postgresql - 为 Postgres 交叉表动态生成 AS 子句

SQL - 具有多个 <> 的失败条件

mysql - 表中的自动增量字段和其他主键

java - 将数据类型 varchar 转换为 numeric

MySQL - 连接两个查询(UNION?)

scala - 如何获取刚刚由 ScalaQuery 插入的自增 ID

c# - 多列上的 SQLite ORM 主键