我检查表中是否存在列。如果存在,我根据第一个表中的列更新第二个表中的列。更新SQL Server 2005中的表列
问题是,更新在执行时不应执行并导致错误。
我在表Service_requests_details
, 检查Requested_by
柱的存在,我再service_requests
基于表Service_Requests_Details
requested_by
列更新的列。
问题是,Requested_By
可能不存在于表Service_requests_details
。
IF EXISTS (SELECT * FROM sys.columns WHERE Name = N'Requested_By' and object_ID = object_ID(N'Service_Requests_Details'))
BEGIN
Update SR
Set SR.Requested_By = SRD.Requested_By
FROM Service_Requests SR
INNER JOIN Service_Requests_Details SRD ON SRD.Request_Index = SR.Service_Request_Index
END
GO
更新:
谢谢大家谁回答。感谢@SqlAcid的答案。
这是什么回报? SELECT * FROM sys.columns WHERE Name = N'Requested_By'and object_ID = object_ID(N'Service_Requests_Details'。请记住,程序参数也保存在sys.columns中,您可以使用相同名称的过程... – Sparky
尝试添加额外'U'给你object_id()(第二个参数是对象类型,加上'U'用于表) – Sparky
正如Dylan所建议的,我对Information_Schema.columns进行了同样的处理,并且遇到了同样的问题 – AlwaysAProgrammer