有时我需要将一个临时值存储到一个字段中。我有一个存储过程,使用以下命令将其添加:
Insert new record first then
SELECT @Record_Value = SCOPE_IDENTITY();
UPDATE ADMIN_Publication_JSON
SET NonPubID = CAST(@Record_Value as nvarchar(20)) + '_tmp'
WHERE RecID = @Record_Value
它只是获取标识值,并在末尾添加“ _tmp”。有没有一种方法可以在表中创建默认值,如果我没有在该字段中插入值,该值将自动执行该操作?
NonPubID
列只是一个NVARCHAR(50)
。
谢谢
答案 0 :(得分:1)
在下面查看NewKey颜色:
CREATE TABLE #Table
(
ID INT NOT NULL IDENTITY(1,1) PRIMARY KEY CLUSTERED,
IDValue VARCHAR(1) ,
ModifiedDT DATETIME NULL,
NewKey AS ( CONVERT(VARCHAR(100),ID)+'_Tmp' )
)
INSERT #Table( IDValue, ModifiedDT )
SELECT 'A', GETDATE()
UNION ALL
SELECT 'Y', GETDATE() - 1
UNION ALL
SELECT 'N', GETDATE() - 5
SELECT * FROM #Table
答案 1 :(得分:1)
您可以编写触发器,将NULL
上的字符串替换为INSERT
。
CREATE TRIGGER admin_publication_json_bi
ON admin_publication_json
AFTER INSERT
AS
BEGIN
SET NOCOUNT ON;
UPDATE apj
SET apj.nonpubid = concat(convert(varchar(20), i.id), '_tmp')
FROM admin_publication_json apj
INNER JOIN inserted i
ON i.id = apj.id
WHERE i.nonpubid IS NULL;
END;
缺点:如果需要,您不能为该列显式插入NULL
。