我尝试测试一些东西,但我遇到的问题是我无法将默认值绑定到列。
我的目标是更改列并将预定义的默认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”不是 在这种情况下允许。有效表达式是常量,常量 表达式和(在某些情况下)变量。列名不是 允许的。
答案 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'