EJF*_*EJF 6 sql database sql-server insert sql-server-2012
我正在处理一项学校作业,该作业希望我将一些新值插入到数据库表中,然后根据 INSERT 是否成功打印一条消息。
问题是这样的:
编写一个脚本,尝试将名为“吉他”的新类别插入到类别表中。如果插入成功,脚本应显示以下消息:成功:记录已插入。
如果更新不成功,脚本应显示如下消息:失败:未插入记录。错误 2627:违反 UNIQUE KEY 约束“UQ_ Categori _8517B2E0A87CE853”。无法在对象“dbo.Categories”中插入重复键。重复的键值为(吉他)。
目前,此类别表包含 2 列:类别 ID 和类别名称。它填充了值
1 Guitars
2 Basses
3 Drums
4 Keyboards
Run Code Online (Sandbox Code Playgroud)
显然,问题希望您插入的吉他类别已经存在,所以我猜这个问题的重点是让它打印错误消息。这个问题的逻辑似乎相当简单。将吉他类别插入表中。如果插入成功,则打印诸如此类。如果不成功,打印某某。我只是不确定语法。这是我到目前为止的 SQL 代码:
USE MyGuitarShop;
INSERT INTO Categories (CategoryID, CategoryName)
VALUES (5, 'Guitars')
IF ( ) --insert is successful
PRINT 'SUCCESS: Record was inserted'
ELSE --if insert is unsuccessful
PRINT 'FAILURE: Record was not inserted.'
PRINT 'Error 2627: Violation of UNIQUE KEY constraint 'UQ__Categori__8517B2E0A87CE853'.'
PRINT 'Cannot insert duplicate key in object 'dbo.Categories'. The duplicate key value is (Guitars).'
Run Code Online (Sandbox Code Playgroud)
我觉得 IF 语句中会有某种布尔方程(IF INSERT = 成功,IF 成功 = TRUE 等),但我只是不确定如何编写它。我在正确的轨道上吗?
编辑:我应该提到我使用的是 SQL Server 2012
我会使用 try/catch 自己
begin try
insert query
print message
end try
begin catch
print message
end catch
Run Code Online (Sandbox Code Playgroud)
你应该可以从这里拿走它。