我有一个表主键为event_id
。我需要将Plant
从IM17
更改为SG18
。如何为插入/选择中的每一行增加变量
我不想删除行(由于历史原因而被保留)。执行以下SQL时,我遇到PK违例。
DECLARE @plant CHAR(4)
DECLARE @l_event_id INT
SELECT @plant = 'SG18'
SET @l_event_id = (SELECT MAX(cast(event_id as int)) FROM dbo.event_header)
INSERT INTO dbo.event_header (
event_id, scenario_name, actor_code, method_code,
SAP_plant_code, object_id,serial_no
)
SELECT @l_event_id + 1 , eh.scenario_name, eh.actor_code,
eh.method_code, @plant, eh.object_id, eh.serial_no
FROM dbo.event_header eh
WHERE eh.SAP_plant_code = 'IM17';
如果'event_Id'是'INT IDENTITY'列 - 那么SQL Server将处理所有这些自动更新id值的细节信息** –
这将会很容易** dbo.event_header是一个“繁忙”表吗? (有很多用户/交易插入到该表吗?) – pkmiec
@marc_s是的,这将是伟大的,但它是一个传统的数据库和PK是varchar(20):( – CodeMonkey