给定以下针对 AdventureWorks 数据库的 SQL 代码:
begin transaction;
drop trigger Sales.iduSalesOrderDetail;
alter table Sales.SalesOrderDetail
add LineNumber int null;
go
with sod as (
select
SalesOrderID,
/* other cols */
LineNumber,
NewLineNumber = row_number() over
(partition by SalesOrderID order by SalesOrderDetailID) + 1
from Sales.SalesOrderDetail
where SalesOrderID <= 44000)
update sod
set LineNumber = NewLineNumber,
ModifiedDate = getdate()
output
inserted.SalesOrderID,
/* other cols */
inserted.LineNumber;
select
SalesOrderID,
/* other cols */
LineNumber
from Sales.SalesOrderDetail
where SalesOrderID <= 44000;
rollback transaction;
Run Code Online (Sandbox Code Playgroud)
在 SQL …