当前位置: 首页 > 面试题库 >

使用增量主键sql插入多行

狄兴业
2023-03-14
问题内容
INSERT INTO TABLE1 (COLUMN1, PRIMARY_KEY)
   SELECT 
      COLUMN1,
      (SELECT COALESCE(MAX(PRIMARY_KEY), 0) 
        FROM TABLE1) + 1 
   FROM 
      TABLE2

错误:

违反主键约束。 无法在对象中插入重复的密钥。

如何使第一行之后的主键递增?

我希望能够同时向此表添加项目列表,而不是将其插入RBAR。

谢谢您的帮助


问题答案:
INSERT INTO TABLE1 (COLUMN1, PRIMARY_KEY)
SELECT COLUMN1,
       (SELECT COALESCE(MAX(PRIMARY_KEY),0)
       FROM TABLE1) + row_number() over (order by 1/0)
FROM TABLE 2

仅对于此语句,ID将是顺序的,例如,如果IDMax(Primary Key)为99,并且要插入4条记录,则ID为100、101、102、103。如果同时插入多个进程,则很容易违反约束,但是这并不是说,这比使用单条记录MAX()本质上不安全的情况要糟。



 类似资料:
  • 问题内容: 我正在尝试更改没有主键或auto_increment列的表。我知道如何添加主键列,但我想知道是否有可能自动将数据插入主键列(我已经在数据库中有500行,并希望为其提供ID,但我不想手动执行) 。有什么想法吗?非常感谢。 问题答案: 在我的测试中,添加列的语句可以正常工作: 在为测试目的而创建的临时表上,以上语句创建了该 列,并为该表中的每个现有行插入了自动递增值,从1开始。

  • 我有两个表,其中主键(另一个表上的外键)在运行时自动递增(使用TOAD for mysql)。如何使用事务将数据同时插入两个表中。 这是第一个表的ddl: 第二个表的ddl: 注意:主要的挑战是从主键上获取自动递增的键值,以便在运行时插入到另一个表中。 提前谢谢。

  • 问题内容: SQL Server中自动增量主键的上限是多少?SQL Server自动增量主键达到上限时会发生什么? 问题答案: Joel的答案是正确的,它是您使用的任何数据类型的上限。 这是其中两个的示例: 整数:2 ^ 31-1(2,147,483,647) bigint:2 ^ 63-1(9,223,372,036,854,775,807) 实际上,我所从事的工作已经达到极限。实际错误是: 我

  • 您好,我尝试使用mysqli从第一个表中获取autoincrement id,然后插入到第二个表中,这是我为每个表设计的数据库 表用户 表siswa 这就是我尝试过的 数据插入到用户表中,但不插入到siswa表中,对此有何建议? 编辑:被忽略的变量只($jkortu)现在修复,谢谢

  • 我正在尝试使用单个表将数据插入到不同的表中,并且我正在插入的表具有主键。

  • 我试图在表中插入一行,带有一个自动递增字段,但我遇到了错误。该表的结构为: id:自动增量 级别:文本 概念:文本 . 在w3c中,我了解到要将新记录插入表中,我们不必为“自动增量”列指定值(将自动添加唯一值)。 我做错了什么?