我有以下检查约束要添加到现有表中。
ALTER TABLE [dbo].[PROCESS_UPLOADDATA]
ADD CONSTRAINT [PROCESS_RequireKeyFileOnMODE_Constraint]
CHECK (
(RTRIM(LTRIM(LOWER(UPLOAD_MODE))) ='sftp'
AND DATALENGTH(KEYFILE_PATH) > 2)
)
UPLOAD_MODE 列是不允许 NULLS 且具有 ftp 或 sftp 等值的列。KEYFILE_PATH 列是一个 NVARCHAR(400) 列,默认设置为 IS NULL。但是,如果 UPLOAD_MODE 中的值设置为“sftp”,我想要确保还提供密钥文件路径。
ALTER TABLE 语句与 CHECK 约束“PROCESS_RequireKeyFileOnMODE_Constraint”冲突。冲突发生在数据库“FILECONTROL”、表“dbo.PROCESS_UPLOADDATA”中。
但是,当我执行时,我收到以下错误消息。请对此提供任何帮助。SQL SERVER 数据库!提前致谢。
//UPDATED SQL CHECK
ALTER TABLE [dbo].[PROCESS_UPLOADDATA]
ADD CONSTRAINT [PROCESS_RequireKeyFileOnMODE_Constraint]
CHECK (
CASE
WHEN (RTRIM(LTRIM(LOWER(UPLOAD_MODE))) ='sftp' )
AND (DATALENGTH(KEYFILE_PATH) > 2)
THEN 1
WHEN (RTRIM(LTRIM(LOWER(UPLOAD_MODE))) != 'sftp' )
AND (DATALENGTH(KEYFILE_PATH) < 2)
THEN 1
WHEN (RTRIM(LTRIM(LOWER(UPLOAD_MODE))) != 'sftp' )
AND ( KEYFILE_PATH IS NULL)
THEN 1
ELSE 0
END =0
)
在考虑了 Andomar 的建议/解释之后,我能够将上述内容放在一起,并想确定逻辑是否适合我在这里需要的内容。再次提前感谢。