当在SQL Server Management Studio 2005中设计表时,如果我为一列指定了VARCHAR(10),当我用tab离开数据类型时,SQL Server将其改为VARCHAR(50)。然后,我必须返回选项卡,把它改回VARCHAR(10),然后它就会接受它。
我明白,出于存储和处理方面的考虑,VARCHAR(10)可能会等同于CHAR(10),但我是否遗漏了什么?是否有足够的原因是我没有考虑到的,设计器的默认行为是自动改变我指定的列的长度?
不,这是SSMS中的一个bug,当你从一个字段上用tab离开时。 它确实很烦人。
可能这只是设计器中的一个错误。
我强烈建议永远不要使用设计器来创建表或改变表结构。你应该为此写一个创建表或改变表的语句,并把它放到源代码控制中。这样部署到生产中就比较容易了。
不,设计师完全没有理由改变数据类型。而且我在Management Studio 2008中无法重现。
如果你这么喜欢designer,可以创建一个UDT(User-Defined Type,用户定义类型),然后用它代替 varchar(10)
:
create type dbo.MyChar from varchar(10) not null
我强烈建议改用 适用于SQL Server的蟾蜍 摆脱所有这些烦恼。
这是ssms2008中的一个bug,当你去别的地方时,不点击数据类型,它就会默认设置为varchar(50)......所以不用担心,也不用考虑,只要小心处理就可以了。