SQL服务器-并行事务生成PK字段值的顺序
SQL Server - Order of generating PK field values by parallel transaction
我有两个线程同时更新 table A。每个线程更新自己的行范围(它们没有交集)。每个线程在 READ UNCOMMITTED
个事务中工作。 table A 上有一个 AFTER UPDATE
触发器,它将记录添加到 table B。Table B 具有 BIGINT
主键。 table B 上的记录按什么顺序添加?是否有可能第一个事务生成的记录将与第二个事务生成的记录混合,或者总是一个事务写入它的数据,第二个事务只在之后写入?
我的意思是,当第一个事务完成时,我会在 table B 中有行,PK 值为 3,6,8,9 并且当第二个事务完成时,将添加PK值4、5、7、10?或者第一笔交易产生的 PK 值范围不会与第二笔交易产生的值混合?从 table B 读取的事务是 READ COMMITTED
确认在tableA中更新记录后,如果事务有其他操作是可以的,但是单条更新命令是不行的。事务 1 更新 table A 中的行,这会触发将行插入 table B。生成了第一个身份范围(例如,5 - 10)。然后事务 2 更新 table B 中的行,这会触发将行插入 table B。生成了第二个身份范围(例如 11 - 15)。两个交易继续执行。如果第二个事务在第一个事务之前完成并提交,则标识范围 11 - 15 似乎在范围 5 - 10 之前提交。
我有两个线程同时更新 table A。每个线程更新自己的行范围(它们没有交集)。每个线程在 READ UNCOMMITTED
个事务中工作。 table A 上有一个 AFTER UPDATE
触发器,它将记录添加到 table B。Table B 具有 BIGINT
主键。 table B 上的记录按什么顺序添加?是否有可能第一个事务生成的记录将与第二个事务生成的记录混合,或者总是一个事务写入它的数据,第二个事务只在之后写入?
我的意思是,当第一个事务完成时,我会在 table B 中有行,PK 值为 3,6,8,9 并且当第二个事务完成时,将添加PK值4、5、7、10?或者第一笔交易产生的 PK 值范围不会与第二笔交易产生的值混合?从 table B 读取的事务是 READ COMMITTED
确认在tableA中更新记录后,如果事务有其他操作是可以的,但是单条更新命令是不行的。事务 1 更新 table A 中的行,这会触发将行插入 table B。生成了第一个身份范围(例如,5 - 10)。然后事务 2 更新 table B 中的行,这会触发将行插入 table B。生成了第二个身份范围(例如 11 - 15)。两个交易继续执行。如果第二个事务在第一个事务之前完成并提交,则标识范围 11 - 15 似乎在范围 5 - 10 之前提交。