Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 上下文不允许_Sql_Sql Server_Ssis - Fatal编程技术网

Sql 上下文不允许

Sql 上下文不允许,sql,sql-server,ssis,Sql,Sql Server,Ssis,这个错误说 在此上下文中不允许使用名称“deliveryDate”。有效表达式是常量、常量表达式和(在某些上下文中)变量。不允许使用列名 代码是 snbYesorNo char(3) CHECK ((requestor = snb AND snbYesorNo = 'NO') OR (requestor <> snb AND snbYesorNo = 'YES')), delMonth char(3) DEFAULT DATENAM

这个错误说

在此上下文中不允许使用名称“deliveryDate”。有效表达式是常量、常量表达式和(在某些上下文中)变量。不允许使用列名

代码是

snbYesorNo char(3) CHECK ((requestor = snb AND snbYesorNo = 'NO')
                          OR (requestor <> snb AND snbYesorNo = 'YES')),
delMonth char(3) DEFAULT DATENAME(month, deliveryDate).
snbYesorNo字符(3)检查((请求者=snb,snbYesorNo='NO'))
或(请求者snb和snbYesorNo=‘是’),
delMonth字符(3)默认日期名称(月份、交货日期)。

最后一件事,我还可以使用什么命令来为ddl生成if语句?我使用了
Check
,但它似乎不起作用。还有其他建议吗?

您希望根据其他列使用默认值。使用触发器或计算列默认值不能包含对其他列的引用?但是为什么要将delMonth存储为单独的列,您已经在deliveryDate中获得了该信息!如果您决定计算列:
delMonth作为DATENAME(month,deliveryDate)
@lad2025我按您所说的做了,我想这是正确的,但它提示列“snbYesorNo”的列检查约束引用另一列,表“POGR”。Msg 1750,第16级,状态0,第1行您不能在检查约束不同的表中引用。你需要UDF。