我正在尝试使用类似的运算符在数据库表上设置约束。这在Azure SQL Server中可能吗?
我有一个列FILE_NAME,例如"VID"是大多数记录中的常见模式。然后,我有另一列FILE_TYPE,我想在其中设置约束,以便只能插入可能的值。
表定义:
CREATE TABLE dbo.CUST_LIBRARY
(
FILE_NAME VARCHAR(20),
FILE_TYPE VARCHAR(10)
);
以下是我的数据:
文件名
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'
);