使用绑定规则和默认值替换已弃用的SQL Server用户定义类型

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的使用并不是最优的.

我怀疑这个问题的答案是'不',但是通常当不推荐使用功能时,通常会有一种替代语法可以作为替代品使用,因此我想提出一个问题,以防有人知道替代方案.

gbn*_*gbn 1

默认和检查约束...

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年前的事了