如何在表中插入错误消息

时间:2014-06-11 09:05:54

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

我正在研究一个项目,在我的项目中,我陷入了一个场景,我需要维护一个错误日志。我创建了一个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]

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

我应该如何实现这一点。

你的帮助会很明显。

由于

1 个答案:

答案 0 :(得分: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;