自定义错误显示约束违反SQL服务器

时间:2015-11-16 09:14:40

标签: sql sql-server constraints sql-server-2014

我是SQL Server 2014的新手。我创建了表student,我创建了三列,如下所示。 melicode具有CHECK限制条件,当您希望使用Edit top 200 rows时效果很好。当您尝试为melicode提供少于两个的数字时,您将面临Errorbox;但问题在于:如果违反了约束,我可以打印一个自定义错误框来说些什么吗,例如"The melicode range starts from 2"

enter image description here

SET QUOTED_IDENTIFIER ON
GO

SET ANSI_PADDING ON
GO

    CREATE TABLE [dbo].[student](
    [stdid] [nchar](10) NOT NULL,
    [stdname] [nvarchar](50) NOT NULL,
    [melicode] [char](10) NOT NULL,
) ON [PRIMARY] 

GO

SET ANSI_PADDING OFF
GO

ALTER TABLE [dbo].[student]  WITH CHECK ADD CHECK  (([melicode]>(2)))

我尝试使用以下代码来实现它,但面临错误:

IF  melicode < 2
    RAISERROR ('melicode can not be less than 2',0,1)
GO

1 个答案:

答案 0 :(得分:1)

您可以在Sql Server中添加自定义错误消息错误,如下所示:
注意:MsgNum应大于50000

exec sp_addmessage @msgnum=50009,@severity=1,@msgtext='melicode can not be less than 2'

创建的消息可以在这里找到:

 SELECT * FROM SYS.messages

您的准则应如下所示:

BEGIN TRY

UPDATE STATEMENT GOES HERE  
OR  
INSERT STATEMENT GOES HERE

END TRY

BEGIN CATCH

RAISERROR(50009,1,1)

END CATCH