我正在创建一个表,该表具有默认值为其他列值
的列的默认约束这是我的表脚本:
CREATE TABLE [ADMIN].[TblUserType]
(
[FunctionId] [tinyint] NOT NULL,
[UserTpyeId] [int] IDENTITY(1,1) NOT NULL,
[Description] [nvarchar](50) NOT NULL,
[ParentId] [int] NOT NULL,
[CreatedBy] [int] NOT NULL,
[UpdatedBy] [int] NOT NULL,
[CreatedOn] [datetime] NOT NULL,
[UpdatedOn] [datetime] NOT NULL,
[Status] [char](1) NOT NULL
)
现在我正在使用这个脚本改变表格
ALTER TABLE ADMIN.TblUserType
ADD CONSTRAINT De_Value DEFAULT UserTpyeId FOR (ParentId)
我收到这样的错误
有效表达式是常量,常量表达式和(在某些上下文中)变量。不允许使用列名。
但我需要添加该列(UserTpyeId
)值具有此列的默认值(ParentId
)
怎么做?
谢谢
答案 0 :(得分:2)
您不能在表的默认约束中使用其他列 - 您需要使用AFTER INSERT
触发器来实现此目的:
CREATE TRIGGER trg_tblUserType_Insert
ON ADMIN.TblUserType
AFTER INSERT
AS
BEGIN
UPDATE ut
SET ut.ParentId = ut.UserTpyeId
FROM ADMIN.TblUserType ut
INNER JOIN Inserted i ON ut.UserTpyeId = i.UserTpyeId
END
另外:你在UserTpyeId
中输错了 - 如果可能的话,在上线前解决这个问题!