gpt4 book ai didi

SQL Server 2008 R2 : Trigger on `TEXT` column

转载 作者:行者123 更新时间:2023-12-04 21:44:27 25 4
gpt4 key购买 nike

我有一个由数据类型为text的列组成的表。

EmployeeMaster

CREATE TABLE [EmployeeMaster]
(
EmpID int identity(1,1),
EmpName varchar(20),
EmpPhone int,
EmpAddress TEXT
);

我想在此表上创建审核日志。

审核表:EmployeeMaster_Audit

CREATE TABLE [EmployeeMaster_Audit]
(
EmpID int,
EmpName varchar(20),
EmpPhone int,
EmpAddress VARCHAR(MAX)
);

为 INSERT 编写触发器。

触发:

CREATE TRIGGER [dbo].[EmployeeMaster_Insert]
ON [dbo].[EmployeeMaster]
FOR INSERT
AS

INSERT INTO [dbo].[EmployeeMaster_Audit]
([EmpID], [EmpName], [EmpPhone], [EmpAddress])
SELECT CONVERT(int,[EmpID]) as [EmpID],[EmpName],[EmpPhone],CONVERT(varchar(max),[EmpAddress]) AS [EmpAddress] FROM INSERTED
GO

错误详细信息:创建触发器时出现以下错误:

Cannot use text, ntext, or image columns in the 'inserted' and 'deleted' tables.

我的尝试:CONVERT(varchar(max),[EmpAddress])

最佳答案

由于触发器在插入后被触发,您可以简单地查询回EmployeeMaster来获取插入的数据。像这样的事情:

CREATE TRIGGER [dbo].[EmployeeMaster_Insert]
ON [dbo].[EmployeeMaster]
FOR INSERT
AS

INSERT INTO [dbo].[EmployeeMaster_Audit] ([EmpID], [EmpName], [EmpPhone], [EmpAddress])
SELECT EM.[EmpID]
, EM.[EmpName]
, EM.[EmpPhone]
, CONVERT(varchar(max), EM.[EmpAddress]) AS [EmpAddress]
FROM INSERTED I
INNER JOIN dbo.[EmployeeMaster] EM
ON EM.[EmpID] = I.[EmpID]
GO

这是假设您无法更改 text 数据类型,请参阅 Zohar 的回答。

关于SQL Server 2008 R2 : Trigger on `TEXT` column,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49146728/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com