消息5074,级别16,状态1,行4对象'SO_Not_Null'取决于列'SO'

时间:2017-01-16 01:25:27

标签: sql sql-server

有人可以告诉我如何删除依赖项。

Alter Table NYM_Player_Stats
    Alter Column SO char(38)  
  

Msg 5074,Level 16,State 1,Line 4
  对象'SO_Not_Null'依赖于列'SO'。

     

Msg 4922,Level 16,State 9,Line 4
  ALTER TABLE ALTER COLUMN SO失败,因为一个或多个对象访问此列。

表格结构:

Team (PK, nchar(10), not null)
Year (nchar (10), not null)
SO (numeric (18,0)
AB (char (38), not null)
Runs (char (38) not null)
Hits (char(38) not null)

1 个答案:

答案 0 :(得分:1)

  

从sys.objects中选择TYPE,其中NAME =' so_not_null'结果是Type 1 C

一种C indicates,其中SO_NOT_NULL是check constraint。要更改列定义,您需要先删除约束。可以在更改列后重新创建约束。

为此,请完成以下步骤:

  1. 执行SELECT DEFINITION FROM SYS.CHECK_CONSTRAINTS WHERE NAME='so_not_null'以获取约束定义。保存输出。
  2. 要删除约束,请执行语句ALTER TABLE NYM_PLAYER_STATS DROP CONSTRAINT SO_NOT_NULL
  3. 在原始问题中运行ALTER TABLE语句以更新列定义。
  4. 如果需要,请执行ALTER TABLE NYM_PLAYER_STATS ADD CONSTRAINT SO_NOT_NULL CHECK (<STATEMENT>)重新创建原始约束,并使用步骤1中的定义替换<STATEMENT>