gpt4 book ai didi

sql - 设置 IDENTITY_INSERT postgresql

转载 作者:行者123 更新时间:2023-11-29 11:12:21 26 4
gpt4 key购买 nike

我不熟悉 postgresql 脚本。

我已经在 ms sql server 中使用了这个脚本:

SET IDENTITY_INSERT my_table ON
INSERT INTO my_table (
my_identity_field,
field1,
field2
)
SELECT
fieldA,
fieldB
FROM
my_other_table
WHERE
fieldC = some_value
SET IDENTITY_INSERT my_table OFF

问题:PostgreSQL 中的脚本 'SET IDENTIFY_INSERT [table_name] ON/OFF' 是什么?

谢谢

已解决:

INSERT INTO my_table (
my_identity_field,
field1,
field2
)
SELECT
fieldA,
fieldB
FROM
my_other_table
WHERE
fieldC = some_value;

SELECT
setval(pg_get_serial_sequence('my_table', 'my_identity_field'),
(SELECT MAX(my_identity_field) FROM my_table));

注意:小写的“my_table”和“my_identity_field”如果它们不是小写(所有字母),我会收到错误消息

最佳答案

在 Postgres 中您不需要 set identity_insert

只需将数据插入到您的表中。

然而,您需要做的是使用 setval() 函数重新同步序列(“自动递增”)列后面的序列:

select setval(pg_get_serial_sequence('my_table', 'my_serial_column'), 
(select max(my_serial_column) from my_table)
);

如果该列未定义为 serial 但“仅”具有从序列中获取的默认值,则需要“手动”提供序列名称

select setval('my_sequence_name', (select max(my_serial_column) 
from my_table)
);

编辑

这是一个 SQLFiddle 示例:http://sqlfiddle.com/#!15/690ea/1

关于sql - 设置 IDENTITY_INSERT postgresql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21375651/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com