【问题标题】:Msg 5074, Level 16, State 1, Line 4 The object 'SO_Not_Null' is dependent on column 'SO'消息 5074,级别 16,状态 1,第 4 行对象“SO_Not_Null”依赖于列“SO”
【发布时间】:2017-01-16 01:25:27
【问题描述】:

谁能告诉我如何删除依赖。

Alter Table NYM_Player_Stats
    Alter Column SO char(38)  

消息 5074,第 16 级,状态 1,第 4 行
对象“SO_Not_Null”依赖于“SO”列。

消息 4922,第 16 级,状态 9,第 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)

【问题讨论】:

  • 这是外键SO_Not_Null 吗?
  • 不,没有外键。
  • SO_Not_Null 是什么?
  • 是表格中的一列。
  • SOSO_Not_Null 有什么关系?

标签: sql sql-server


【解决方案1】:

运行 select TYPE from sys.objects where NAME='so_not_null' 并且结果是 Type 1 C

Cindicates 的类型,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>) 重新创建原始约束,将 <STATEMENT> 替换为步骤 1 中的定义。

【讨论】:

    猜你喜欢
    • 2012-03-26
    • 2016-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-29
    相关资源
    最近更新 更多