找不到要更新的料列。最後取的值已被更
在表:
合同主表:Contract(ContractID,CompanyID,ContractName.ContractVolume)
公司表:Company(CompanyID,CompanyName,Remark)
ContractID,CompanyID分主.
要完成的任:
更改公司(Companyid)後,合同中公司的公司也著更
SQL代如下:
Create Trigger [Company_Update] on Company
For Update
As
Begin
Declare @i_CompanyID Varchar(20),@d_CompanyID Varchar(20)
Declare Company_InsertCursor Cursor
For
Select CompanyID From Inserted
Declare Company_DeleteCursor Cursor
For
Select Companyid From Deleted
Open Company_InsertCursor
Open Company_DeleteCursor
Fetch Next From Company_InsertCursor
Into @i_CompanyID
Fetch Next From Company_DeleteCursor
Into @d_CompanyID
While @@Fetch_Status=0
Begin
IF @i_CompanyID <> @d_Companyid
Begin
Update Contract
Set CompanyID=@i_CompanyID
Where CompanyID=@d_CompanyID
End
Fetch Next From Company_InsertCursor
Into @i_CompanyID
Fetch Next From Company_DeleteCursor
Into @d_CompanyID
End
Close Company_InsertCursor
Deallocate Company_InsertCursor
Close Company_DeleteCursor
Deallocate Company_DeleteCursor
End
但是更改公司表中的公司後,是出:"找不到要更新的料列。最後取的值已被更",什麽呀?要如何做才不?高手指,不感激,
[解决办法]
在表:
合同主表:Contract(ContractID,CompanyID,ContractName.ContractVolume)
公司表:Company(CompanyID,CompanyName,Remark)
ContractID,CompanyID分主.
要完成的任:
更改公司(Companyid)後,合同中公司的公司也著更
update A
set CompanyID=B.CompanyID
from Contract A
inner join Company B
on A.CompanyID=B.CompanyID
where B.CompanyID= 'c00001 '
[解决办法]
不要使用触发器,用外键约束来实现对Contract表CompanyID的更新
[解决办法]
代码改成:
Create Trigger [Company_Update] on Company
For Update
As
set nocount on
Begin
Declare @i_CompanyID Varchar(20),@d_CompanyID Varchar(20)
Declare Company_InsertCursor Cursor
For
Select CompanyID From Inserted
Declare Company_DeleteCursor Cursor
For
Select Companyid From Deleted
Open Company_InsertCursor
Open Company_DeleteCursor
Fetch Next From Company_InsertCursor
Into @i_CompanyID
Fetch Next From Company_DeleteCursor
Into @d_CompanyID
While @@Fetch_Status=0
Begin
IF @i_CompanyID <> @d_Companyid
Begin
Update Contract
Set CompanyID=@i_CompanyID
Where CompanyID=@d_CompanyID
End
Fetch Next From Company_InsertCursor
Into @i_CompanyID
Fetch Next From Company_DeleteCursor
Into @d_CompanyID
End
Close Company_InsertCursor
Deallocate Company_InsertCursor
Close Company_DeleteCursor
Deallocate Company_DeleteCursor
End
set nocount off