问题假设:
我在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
“应该只允许:
有人可以建议在数据库级别实现这个的最佳方法吗?
答案 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]')
)