使用TSQL更改现有列的类型-约束如何?

使用TSQL更改现有列的类型-约束如何?,tsql,constraints,alter-table,Tsql,Constraints,Alter Table,我想将列的类型从bit改为tinyint。这是我的SQL: ALTER TABLE table ALTER COLUMN column TINYINT NOT NULL 这告诉我列有一个约束。我放弃了限制,但这真的有必要吗?做这件事的正确方法是什么?我想之后我也需要一个约束 谢谢:)是的,这是必要的。 对位字段的约束不可能对tinyint字段起作用,因为它们是不同的数据类型 1的BIT值并不表示“数字1”,它表示true或yes或on 就好像你有一条规则: 该值必须介于2010年1月1日和20

我想将列的类型从bit改为tinyint。这是我的SQL:

ALTER TABLE table ALTER COLUMN column TINYINT NOT NULL
这告诉我列有一个约束。我放弃了限制,但这真的有必要吗?做这件事的正确方法是什么?我想之后我也需要一个约束


谢谢:)

是的,这是必要的。

字段的约束不可能对
tinyint
字段起作用,因为它们是不同的数据类型

1
BIT
值并不表示“数字1”,它表示
true
yes
on

就好像你有一条规则:

该值必须介于2010年1月1日和2010年12月31日之间

…然后将该值更改为十进制数据类型。小数点不可能满足约束的条件


在DDL操作之前,您必须禁用约束,因为更改后约束可能无效。

需要输入!制约因素是什么?什么信息?SQL的哪个版本(我假设是SQL Server)?SQL Server 2005,消息是存在一个名为DF__table__column__6FEA6AF6的约束。因此,在类型更改后,我将删除它并再次创建它?没有别的办法吗?@grady-是的。如果之前是
位,之后是
小点,那么旧的约束甚至不起作用。关于
真的合理化似乎是假的。从
tinyint
移动到
int
也会得到同样的结果。“这只是语法上的一个限制,”马丁史密斯-这是假的,我只是想让他明白为什么