数据库 - ID 列 - 身份与否?
Databases - ID column - identity or not?
我对 SQL 批量插入做了一些研究 - 假设我有 10 万个项目要插入,我将批量大小设置为 100。
如果 ID 列未标记为 Identity
,则批量插入将起作用。
但我发现了一个非常有趣的(到目前为止是理论上的)问题,我需要一些意见:
问题可能是,例如5 个用户同时进行批量插入,那么如何安全地提供 ID 列值?我不能只获取 table rows count + 1
,因为这样所有 5 个用户的 ID 都会重复,并且批量插入操作将失败。
您可以使用 SEQUENCE 作为 UNIQUE ID 生成器或尝试 TRIGGER ON INSERT 来获取唯一 ID。
编辑
使用 mysql 您可以为每一行构建触发器
DELIMITER $$
CREATE TRIGGER adresse_trigger_insert_check
BEFORE INSERT ON adresse
FOR EACH ROW BEGIN
IF NEW.land IS NULL THEN
SET NEW.land := 'XY';
END IF;
END$$
DELIMITER ;
我是否应该使用 IDENTITY?
我对 SQL 批量插入做了一些研究 - 假设我有 10 万个项目要插入,我将批量大小设置为 100。
如果 ID 列未标记为 Identity
,则批量插入将起作用。
但我发现了一个非常有趣的(到目前为止是理论上的)问题,我需要一些意见:
问题可能是,例如5 个用户同时进行批量插入,那么如何安全地提供 ID 列值?我不能只获取 table rows count + 1
,因为这样所有 5 个用户的 ID 都会重复,并且批量插入操作将失败。
您可以使用 SEQUENCE 作为 UNIQUE ID 生成器或尝试 TRIGGER ON INSERT 来获取唯一 ID。
编辑
使用 mysql 您可以为每一行构建触发器
DELIMITER $$
CREATE TRIGGER adresse_trigger_insert_check
BEFORE INSERT ON adresse
FOR EACH ROW BEGIN
IF NEW.land IS NULL THEN
SET NEW.land := 'XY';
END IF;
END$$
DELIMITER ;
我是否应该使用 IDENTITY?