我试图了解微软PUBS数据库样本的架构
在那里,我正在查看au_id
列,其具有用户定义的数据类型 id:varchar(11)。
因此,如果我清楚地理解,varchar(11)意味着它允许在单元格中输入11个字符。但是如果我进入
为什么会这样?他们是否有一些方法来验证此条目。我只能在id
User-Defined Data Type Folder
的用户定义数据类型
提前谢谢。
答案 0 :(得分:4)
好的,刚刚找到了将创建pubs数据库的脚本。
作者的au_id
列定义为:
CREATE TABLE authors
(
au_id id
CHECK (au_id like '[0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9][0-9][0-9]')
CONSTRAINT UPKCL_auidind PRIMARY KEY CLUSTERED,
/* More columns */
CHECK约束拒绝您的无效值,而不是与用户定义类型相关的任何内容。如果您检查错误消息,可能提及它是CHECK
约束失败。
(顺便说一句 - 我以为这是SSN格式,而不是电话号码 - 有人确认吗?)
SQL Server中的用户定义类型(除了表类型)没有提供太多价值 - 他们真正做的就是将固定所有比例/精度/长度选项的内置类型的简写名称关联起来。
如果系统允许你设置严格的类型,那么它们将非常有用 - 这样两个相同底层类型但具有不同类型名称的值不可比较/可分配 - 你'例如,d得到更好的警告/错误,而不是使用错误对齐的连接进行查询。