我想在SQL Server中使用ALTER TABLE
添加默认约束,但我收到了以下错误消息。
表'Register'中的'StartDate'列无效,无法创建 默认约束。
我知道我可以在创建表时声明约束,但这不是我所处的情况。我希望有人可以帮助我;)
这是我的alter
声明:
ALTER TABLE [dbo].[Register]
ADD CONSTRAINT [Register_StartDate] DEFAULT (GETDATE()) FOR StartDate
这是我的创建表脚本:
CREATE TABLE [dbo].[Register]
(
[ID] [INT] IDENTITY(1, 1) NOT NULL,
/* ....*/
[StartDate] [DATETIME] NULL
)
已修改:已修复:我忘记了[StartDate]字段在表格中甚至不存在。我的坏!
答案 0 :(得分:9)
据我所知,有两种情况可能导致此错误。
尝试将默认约束添加到:
表格定义
CREATE TABLE dbo.Register
(
ID INT IDENTITY(1, 1) NOT NULL,
Computed AS 'Foo'
)
以下两个语句都失败,错误1752。
ALTER TABLE dbo.Register
ADD CONSTRAINT C1 DEFAULT 'X' FOR Computed
ALTER TABLE [dbo].[Register]
ADD CONSTRAINT [Register_StartDate] DEFAULT (GETDATE()) FOR StartDate
various other conditions上不允许向列添加默认约束,但这些都有自己唯一的错误编号和消息。
+------------------------------------+--------------+
| Reason | Error number |
+------------------------------------+--------------+
| Column is IDENTITY | 1754 |
| Column is timestamp/rowversion | 1755 |
| Sparse Column | 1791 |
| Default constraint already present | 1781 |
+------------------------------------+--------------+
答案 1 :(得分:1)
错误1752建议约束定义中引用的列名不存在。 交叉检查表中是否存在列,或者我们是否在默认约束定义中引用了错误的名称。