在默认约束中使用非空列

时间:2017-03-02 16:59:49

标签: sql-server tsql sql-server-2012

我已经学会了一种难以理解的方法,即你不能在另一列的默认约束中使用列的值,而这必须用触发器来完成。

尝试这样做会引发以下错误:

  

在此上下文中不允许使用名称[ColumnName]。有效表达式是常量,常量表达式和(在某些情况下)变量。不允许使用列名。

我的问题是为什么在其他列设置为NOT NULL时无法执行此操作?由于始终存在值,因此您应始终能够生成有效的默认值。另外,这些允许变量的情况是什么?

示例:

我们假设我的函数返回GenerateIdentifier(@p1, @p2) CREATE TABLE Employees( Id INT NOT NULL IDENTITY (1,1) PRIMARY KEY, FirstName NVARCHAR(50) NOT NULL, LastName NVARCHAR(50) NOT NULL, EmpIdentifier NCHAR(5) NOT NULL ); ALTER TABLE Employees ADD CONSTRAINT DF_EmpIdentifier DEFAULT GenerateIdentifier([FirstName], [LastName]) FOR EmpIdentifier

ALTER TABLE

function triggerClick() { $timeout(function() { $(document).ready(function() { document.getElementById('download').click(); }) }, 0); } $scope.download = function (obj) { lovServices.attachment(obj) .then(function (response) { $scope.theLink = response.url; triggerClick() }) } 语句会抛出该错误消息。

0 个答案:

没有答案