我有一个带有xml参数的存储过程。为简单起见,我们假设xml代表汽车的集合。集合中的每个元素代表一辆汽车,并有详细信息,如识别号和制造商。存储过程的目标是将数据插入数据库中。数据库架构已规范化,因此有一个制造商表和一个汽车表。许多汽车可以拥有相同的制造商。
架构如下所示:
在处理xml时,我需要插入xml中列出的不在数据库中的制造商,然后插入xml中列出的不在数据库中的汽车。
在步骤1和步骤2之间,用户或其他进程可能会删除制造记录,因此即使我插入制造记录,或者我已经存在的所需记录,当我插入车记录时所需的制造记录不再存在。
我该怎样防止这种情况?我可以在一个事务中执行此操作,该事务将锁定我在插入之前插入的制造商记录,但是如何锁定我需要的已存在的记录?
答案 0 :(得分:0)
如果使用sql事务,这非常简单。
伪代码:
BEGIN TRANSACTION
INSERT Manufacturers
INSERT Cars
COMMIT TRANSACTION
在您的交易完成(提交或回滚)之前,没有任何东西可以删除从此流程插入的制造商行。