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

时间:2012-03-20 21:30:25

标签: sql sql-server-2008 tsql

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

我的目标是更改列并将预定义的默认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

在这个例子中,我在ALTER TABLE行

上得到了错误
  

Msg 128,Level 15,State 1,Line 1

     

名称“dbo.True”不是   在这种情况下允许。有效表达式是常量,常量   表达式和(在某些情况下)变量。列名不是   允许的。

2 个答案:

答案 0 :(得分:1)

如果您希望您的列默认为“1”,为什么不试试这个:

ALTER TABLE dbo.aaa ADD CONSTRAINT DF_col_b DEFAULT '1' FOR column_b ;

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

ALTER TABLE dbo.aaa ADD CONSTRAINT DF_col_b DEFAULT 1 FOR column_b ;

答案 1 :(得分:0)

没有绑定预定义默认值的语法。您需要使用stored procedure

sp_bindefault 'True', 'dbo.aaa.column_b'