问题描述
我正在尝试使用like运算符在数据库表上设置约束。在Azure SQL Server中有可能吗?
我有一个FILE_NAME列,在大多数记录中都有“ VID”作为通用模式。然后,我要在另一列FILE_TYPE上设置约束,以便只能插入可能的值。
表定义:
CREATE TABLE dbo.CUST_LIBRARY
(
FILE_NAME VARCHAR(20),FILE_TYPE VARCHAR(10)
);
这是我的数据的样子:
FILE_NAME
VID_GEO_1 |
IMG-ART_1 |
TER-VID_6 |
FIL-PAR_1 |
现在,我想在FILE_TYPE列上设置约束,如果FILE_NAME中包含“ VID”,我们只能插入值“ MP4”,“ AVI”。否则,其余记录应始终默认为“ NA”,并且不应插入其他任何内容。
解决方法
您需要检查约束:
CREATE TABLE dbo.CUST_LIBRARY (
FILE_NAME VARCHAR(20),FILE_TYPE VARCHAR(10),CONSTRAINT CHK_CUST_LIBRARY
CHECK ( (FILE_TYPE IN ('MP4','AVI') AND (FILE_NAME LIKE '%VID%')) OR
FILE_TYPE = 'NA'
);