我在 SQL Server 2008 R2 中有一张表,其中包含不同公司的“职位”。
我有一个函数 GET_KEY,它通过在表上执行 SELECT MAX 创建一个位置编号。[我不能使用身份增量,因为职位编号需要是特定公司的第一个可用编号]
SELECT @v_position_no = max(POSITION_NO) + 0.01
FROM POSITIONS WHERE COMPANY_NO = @p_company_no
我有一个复制 position 的功能COPY_POS
。
我想复制现有职位两次,但要为每个职位分配一个适当的职位编号。
我跑GET_KEY
,然后COPY_POS
,然后GET_KEY
,然后COPY_POS
但是,职位表会锁定。我几乎可以肯定(这是合乎逻辑的)这是因为GET_KEY
和之间存在冲突COPY_POS
。[只有当我尝试并GET_KEY
连续COPY_POS
两次时才会出现此问题]
我试过的...
我尝试将每个
GET_KEY
and包含COPY_POS
在BEGIN TRAN
and中COMMIT TRAN
,但这没有用。整个存储过程都包含在一个
BEGIN TRY
和END TRY
我尝试删除它,但这也没有工作......
有没有人有任何想法?
谢谢!