使用LIKE运算符的数据库表约束

问题描述

我正在尝试使用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'
            );

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...