我有两个表A(id,col1,col2)和B(col3,col4,col5,col6)
INSERT INTO A(col1, col2)
(SELECT col3, col4 from B)
ERROR: null value in column "id" violates not-null constraint
DETAIL: Failing row contains (null, "abc", "def")
INSERT INTO A(id, col1, col2)
(SELECT DEFAULT, col3, col4 from B)
这引发错误
ERROR: syntax error at or near "DEFAULT"
为什么postgres不自动为列“id”生成值?如果我从表B中提供“id”,或者如果我插入单行(没有select)并为自动生成的列提供“default”关键字,查询就可以工作。
编辑:表创建查询
CREATE TABLE A
(
id bigint NOT NULL,
col1 character varying(10),
col2 character varying(10),
CONSTRAINT A_pk PRIMARY KEY (id)
);
ALTER TABLE A OWNER TO user1;
CREATE SEQUENCE A_id_seq
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
ALTER TABLE A_id_seq OWNER TO user1;
ALTER SEQUENCE A_id_seq OWNED BY A.id;
INSERT INTO A(col1, col2)
(SELECT col3, col4 from B)
失败,因为没有为ID设置默认值。默认值应该是从序列中取nextval。
CREATE SEQUENCE A_id_seq
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
CREATE TABLE A
(
id bigint NOT NULL DEFAULT nextval('A_id_seq'::regclass),
col1 character varying(10),
col2 character varying(10),
CONSTRAINT A_pk PRIMARY KEY (id)
);
或者,您可以在创建表中使用bigserial而不是bigint,以便为您创建序列并自动设置默认设置。最终结果是一样的。
问题内容: 我想从行插入中检索自动生成的ID,但得到一个 这是代码: 这是PostgreSQL表: PostgreSQL支持自动生成的密钥,但是我得到了这个异常: 编辑:我试图这样做以获得自动生成的密钥: 但我得到了: ,虽然我认为 应该在插入行时调用 编辑: 插入行时正确创建了自动增量值 任何想法 ? 问题答案: 请注意,在较新版本的Postgres中,您需要使用 代替
我想从行插入中检索自动生成的id,但得到的是 PostgreSQL支持自动生成的密钥,但我得到了这个异常: 编辑:我尝试了此操作以获取自动生成的密钥: 但我得到一个: 插入行时会正确创建自动递增值 知道吗?
问题内容: 以下代码应将数组中的每个键值对插入到表中的数学列值中。该脚本不返回错误,但插入的行仅包含数组中的最后一个值 例如 将行成功插入到具有第一,第二和第三列的表中,但总共插入值3。 问题答案: 忘记了,只需使用并传递以下值: 另外,您可以完全擦除命名参数,以简化代码:
问题内容: 如何检索刚插入的行? 例如: 我插入了2,返回了2 然后插入3,我想返回3而不是5行。 提前致谢。 史蒂夫 PS:可能需要使用存储过程吗? 问题答案: 我不是100%不确定您到底想要什么…。但是SQL Server有一个子句可以从and和statement中输出内容: 在这里,您正在插入值和的插入值(例如INT IDENTITY列)和。 如果仅将结果返回到Mgmt Studio中的网格
问题内容: 我有以下问题。我的表格()结构如下: 存储不同表的名称,并在这些表中存储ID。我想做的是检查上述表中的行是否存储了对其他表的有效引用。因此,我需要从外部表中选择一行,其名称基于存储在中的字符串。我的代码不起作用,因为它存在语法错误,但清楚地显示了我想要实现的目标: 问题答案: 如果知道所有可能的表名,则可以使用条件语法来实现它:
本文向大家介绍Python随机生成数据后插入到PostgreSQL,包括了Python随机生成数据后插入到PostgreSQL的使用技巧和注意事项,需要的朋友参考一下 用Python随机生成学生姓名,三科成绩和班级数据,再插入到PostgreSQL中。 模块用psycopg2 random 以上就是利用Python随机生成数据后插入到PostgreSQL数据库中的全部内容,希望给大家学习Pytho