我已经学会了一种难以理解的方法,即你不能在另一列的默认约束中使用列的值,而这必须用触发器来完成。
尝试这样做会引发以下错误:
在此上下文中不允许使用名称[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()
})
}
语句会抛出该错误消息。