【问题标题】:How to insert the error message in table如何在表格中插入错误消息
【发布时间】:2014-08-01 06:26:09
【问题描述】:

我正在做一个项目,在我的项目中,我陷入了一个需要维护错误日志的场景。我创建了一个error log 表,其中列名Error Message。我想在该列中插入错误消息。例如,我正在使用标识列,现在如果有人在不使用“设置标识开”的情况下插入该标识列的值,则会显示一条错误消息,例如“无法插入显式值当 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]

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

我应该如何做到这一点。

您的帮助将不胜感激。

谢谢

【问题讨论】:

  • 请发布您正在使用的表的结构,以及您用于执行插入的命令。顺便说一句,我质疑您为什么要设置错误 log 表的标识值。
  • 嗨,Brendan,这只是一个例子。我想在不允许插入记录的表中插入所有这些错误消息。
  • 对——不管是不是例子,我们可能需要看看你的表结构是什么,以便我们提供帮助。为什么你的表不允许你插入?
  • 我添加了两个表示例和错误日志的表结构。如果唯一约束是紫罗兰色,则应将错误消息插入错误日志表的 errormessage 列中

标签: sql-server insert-update error-logging


【解决方案1】:

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

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;

【讨论】:

  • ERRORLOG 有哪些列?
猜你喜欢
  • 2012-04-15
  • 2019-08-22
  • 2017-03-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多