Sql server 如何在表中插入错误消息

Sql server 如何在表中插入错误消息,sql-server,insert-update,error-logging,Sql Server,Insert Update,Error Logging,我正在做一个项目,在我的项目中,我被困在一个场景中,我需要维护一个错误日志。我创建了一个错误日志表,其中有列名错误消息。我想在该列中插入错误消息。例如,我使用的是标识列,现在如果有人在未使用“Set identity On”的情况下为该标识列插入值,则会显示错误消息,如“当identity_insert设置为OFF时,无法在表“example”中为标识列插入显式值。”我希望该错误消息作为我的表中的记录 表结构 create table example ( id int identity(1,

我正在做一个项目,在我的项目中,我被困在一个场景中,我需要维护一个错误日志。我创建了一个
错误日志
表,其中有列名
错误消息
。我想在该列中插入错误消息。例如,我使用的是标识列,现在如果有人在未使用“Set identity On”的情况下为该标识列插入值,则会显示错误消息,如“当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表的ErrorMessage列中,我想显示在示例表中插入记录时发生的错误消息

我应该如何做到这一点

你的帮助将是可贵的


谢谢

可能的解决方案是使用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表的errormessage列errorlog有哪些列?