Ada*_*nes 6 sql sql-server deprecated user-defined-types
我们有一个YesNo的用户定义数据类型,它具有char(1)的别名.该类型具有绑定规则(必须为Y或N)和默认(N).
这样做的目的是当任何开发团队创建一个类型为YesNo的新字段时,规则和默认值将自动绑定到新列.
规则和默认值已被弃用,并且在下一个SQL Server的未来版本中将不可用,是否有其他方法可以实现相同的功能?
我应该补充一点,我知道我可以使用CHECK和DEFAULT约束来复制绑定的Rule和Defalut对象的功能,但是这些必须在每次使用类型时应用,而不是免费获得功能'通过使用具有绑定规则和默认值的UDT.
该帖子涉及一个支持现有应用程序而不是新开发的数据库,所以我知道我们对UDT的使用并不是最优的.
我怀疑这个问题的答案是'不',但是通常当不推荐使用功能时,通常会有一种替代语法可以作为替代品使用,因此我想提出一个问题,以防有人知道替代方案.
默认和检查约束...
CREATE TABLE foo (
col1 int...
YesNo char(1) NOT NULL DEFAULT ('N')
CONSTRAINT CK_foo_YesNo CHECK (YesNo IN 'Y', 'N'))
col2 ...
)
Run Code Online (Sandbox Code Playgroud)
就我个人而言,我倾向于不使用UDT(上次是SQL Server 6.5 IIRC),因为没有ALTER TYPE以防万一发生任何变化......
至于弃用..
首次在SQL Server 2005 的CREATE RULE中提到。所以,我们在 6 年零 3 个版本前被告知
对于SQL Server 2000 ...
“规则是一种向后兼容功能,执行一些与检查约束相同的功能。使用 ALTER 或 CREATE TABLE 的 CHECK 关键字创建的 CHECK 约束是首选的标准方法......”
这同样适用于CREATE DEFAULT,对象不是约束
那是11年前的事了