如何在SQL表列上放置验证?

时间:2011-06-03 06:05:03

标签: sql sql-server database

问题假设:

我在SQL Server中有一个表,结构如下;

Column 1: Id | INT | NOT NULL | Auto-Identity
Column 2: Name | VARCHAR(20) | NOT NULL
Column 3: Number | SMALLINT | NOT NULL

解决方案场景:

我想要的是,无论何时在列中输入某些值,都应该在数据库级别本身对某些检查进行验证或验证?

示例:

第3列,Number“应该只允许:

  • 数值
  • 长度为10
  • 并且值应以数字4
  • 开头

有人可以建议在数据库级别实现这个的最佳方法吗?

2 个答案:

答案 0 :(得分:3)

使用CHECK约束 - http://msdn.microsoft.com/en-us/library/ms188258.aspx

ALTER TABLE table
ADD CONSTRAINT tenDigitsStartsWithFour CHECK
(Col3 BETWEEN 4000000000 AND 4999999999) -- Col3 must be a BIGINT, thanks Mikael

答案 1 :(得分:2)

我认为您的number列应该是固定宽度的文字,例如

CREATE TABLE MyTable
(
 Id INTEGER NOT NULL IDENTITY, 
 Name VARCHAR(20) NOT NULL UNIQUE, -- presumably a candidate key
 Number CHAR(10) NOT NULL
    CHECK (Number LIKE '4[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]')
)