在T-SQL中为列添加预定义的默认值

Jan*_*ren 5 sql t-sql sql-server-2008

我尝试测试一些东西,我得到的问题是我无法将默认值绑定到列.

我的目标是更改列并将预定义的默认值附加True到该列.

我究竟做错了什么?

CREATE default [dbo].[True] as (1)
GO

CREATE TABLE dbo.aaa ( column_a INT, column_b char(1)) ;
GO

INSERT INTO dbo.aaa (column_a)VALUES ( 7 ) ;
GO

ALTER TABLE dbo.aaa ADD CONSTRAINT DF_col_b DEFAULT [dbo].[True] FOR column_b ;
GO

INSERT INTO dbo.aaa (column_a) VALUES ( 10 ) ;
GO

SELECT * FROM dbo.aaa ;
GO

DROP TABLE dbo.aaa ;
GO
Run Code Online (Sandbox Code Playgroud)

在这个例子中,我得到了ALTER TABLE行的错误

Msg 128,Level 15,State 1,Line 1

在此上下文中不允许使用名称"dbo.True".有效表达式是常量,常量表达式和(在某些上下文中)变量.不允许使用列名.

Val*_*ken 1

如果您希望您的列默认为“1”,为什么不尝试以下操作:

ALTER TABLE dbo.aaa ADD CONSTRAINT DF_col_b DEFAULT '1' FOR column_b ;
Run Code Online (Sandbox Code Playgroud)

您的默认值称为 True。如果唯一的可能性是 True 或 False,那么您可能应该将类型从 char(1) 更改为 bit。alter 语句将变为:

ALTER TABLE dbo.aaa ADD CONSTRAINT DF_col_b DEFAULT 1 FOR column_b ;
Run Code Online (Sandbox Code Playgroud)