有没有人看到这个SQL Server代码有什么问题?
IF NOT EXISTS(SELECT *
FROM sys.columns
WHERE Name = 'OPT_LOCK'
AND object_ID = Object_id('REP_DSGN_SEC_GRP_LNK'))
BEGIN
ALTER TABLE REP_DSGN_SEC_GRP_LNK
ADD OPT_LOCK NUMERIC(10, 0)
UPDATE REP_DSGN_SEC_GRP_LNK
SET OPT_LOCK = 0
ALTER TABLE REP_DSGN_SEC_GRP_LNK
ALTER COLUMN OPT_LOCK NUMERIC(10, 0) NOT NULL
END;
Run Code Online (Sandbox Code Playgroud)
当我运行这个时,我得到:
消息207,级别16,状态1,行3
无效的列名称"OPT_LOCK".
在更新命令上.
谢谢.
我有一个我正在处理的SQL脚本,当我创建(或编辑)一个列然后尝试修改该新列时,我遇到了一个问题.
例如:
BEGIN
ALTER TABLE SampleTable ADD ColumnThree int
END
IF (EXISTS (SELECT * FROM sys.columns WHERE name = 'ColumnThree'))
BEGIN
UPDATE SampleTable SET ColumnThree = 0
END
Run Code Online (Sandbox Code Playgroud)
现在我认为BEGIN/END块会将这两个项目分开,但是我收到错误"无效的列名'ColumnThree'." 当我试图运行它.为什么?第一个BEGIN/END不应该设置ColumnThree以及IF(EXISTS应该保护UPDATE语句在该列名称不存在时运行).
做这样的事的正确方法是什么?(我似乎有几个类似的情况需要这样做).