PostgreSQL:用于复制另一个用户插入记录的值,该记录来自具有唯一ID的同一个表

时间:2018-01-05 12:26:10

标签: sql database postgresql sql-insert

我有一个名为customer_config的表。我有四个记录。

id  customer_name   cust_id currency_code
1      test            1         (null)
2      alpha           1         (null)
3      beta            1         (null)
4      clone           1         (null)

id列不应为null且唯一。 我想将所有这些记录克隆到另一个客户,即:cust_id =2; 我正在尝试下面的查询,如

INSERT INTO customer_config(cust_id, customer_name, currency_code)
SELECT 2, customer_name, currency_code
FROM customer_config
WHERE cust_id = 1;

这里我不能通过添加序列来介绍/更新customer_config表。

有了任何逻辑,我可以插入记录。

您的帮助将不胜感激

注意:

  

错误就像   17:55:38 [INSERT - 0行,0.583秒] [代码:0,SQL状态:23502]错误:列“id”中的空值违反非空约束     详细信息:失败的行包含(4,null,sslProtocol,1,SSL,null)。   ...执行1条语句,0行受影响,执行/获取时间:0.583 / 0.000秒[0成功,1错误]

1 个答案:

答案 0 :(得分:0)

您的id列显然没有默认值。因此,您必须显式插入其值。如果您有此列的序列,您可以尝试:

INSERT INTO customer_config(id, cust_id, customer_name, currency_code)
SELECT NEXTVAL('id_sequence'), 2, customer_name, currency_code
FROM customer_config
WHERE cust_id = 1;

其中id_sequence是该序列的名称。