相关疑难解决方法(0)

创建列后,sql server update上的列名无效

有没有人看到这个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 t-sql sql-server ddl

21
推荐指数
1
解决办法
2万
查看次数

SQL Alter Table然后修改值

我有一个我正在处理的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语句在该列名称不存在时运行).

做这样的事的正确方法是什么?(我似乎有几个类似的情况需要这样做).

sql alter-table

3
推荐指数
1
解决办法
7402
查看次数

标签 统计

sql ×2

alter-table ×1

ddl ×1

sql-server ×1

t-sql ×1