sql-server - 如何在表中插入错误信息

标签 sql-server insert-update error-logging

我正在开发一个项目,在我的项目中我陷入了一个场景,我需要维护错误日志。我创建了一个错误日志表,其中有列名称错误消息。我想在该列中插入错误消息。例如,我正在使用标识列,现在如果有人在不使用“设置标识”的情况下为该标识列插入值,则会显示一条错误消息,例如“无法插入显式值”当 IDENTITY_INSERT 设置为 OFF 时,表“example”中的标识列。”我希望该错误消息记录在我的表中。

表结构

create table example
(
  id int identity(1,1),
  code int not null,
  startdate date not null,
  enddate date null,
  CONSTRAINT [PK_example] PRIMARY KEY CLUSTERED 
  (
    [id] ASC
  ),

  constraint uc_combination UNIQUE(code,startdate,enddate)
)on [primary]

错误日志表

Create table errorlog
(
  errorid int identity (1,1),
  Errordate datetime,
  ErrorMessage Nvarchar(255)
) on [primary]

在错误日志表中的错误消息列中,我想显示在示例表中插入记录时发生的错误消息。

我应该如何实现这一目标。

您的帮助将非常重要。

谢谢

最佳答案

可能的解决方案是使用 TRY...CATCH block :

DECLARE @DUPDATE AS DATETIME

SELECT @DUPDATE = GETDATE()    

BEGIN TRY
    INSERT INTO Example(code, startdate, enddate)
    VALUES (1, @DUPDATE, @DUPDATE)

    -- Second insert should violate the constraint...
    INSERT INTO Example(code, startdate, enddate)
    VALUES (1, @DUPDATE, @DUPDATE)
END TRY
BEGIN CATCH
    -- Execute the error retrieval routine.
    INSERT INTO ERRORLOG(ErrorDate, ErrorMessage)
    VALUES (GETDATE(), ERROR_MESSAGE())
END CATCH;

关于sql-server - 如何在表中插入错误信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24158816/

相关文章:

c# - 是否可以使用 EF C# Linq 将数学表达式存储在数据库中

MySQL ON DUPLICATE KEY UPDATE 和 auto_increment 索引

mysql - 使用 order by 和 limit-mysql 在单个查询中更新两个不同表的两列

http-headers - ELMAH-如何使用错误日志记录HTTP请求正文和HTTP请求 header ?

python - 异常回溯的选择性处理

java - 如何使用 db=SQL Server 2008 Express 在 java 中执行批量插入语句(使用 JDBC)

c# - 如何将 DataAdapter 的超时时间增加到 3 分钟?

c# - Ado.net 从多线程调用存储过程比单线程慢

sql-server-2005 - 为什么在 SQL Server 2005 中无法在不锁定整个表的情况下插入/更新数据?

c# - 新手从哪里开始在 asp.net c# 中记录错误?