Я работаю над заданием школы, которое хочет, чтобы я вставлял некоторые новые значения в таблицу базы данных, а затем печатал сообщение на основе того, был ли успешным INSERT.Синтаксис SQL для проверки того, был ли INSERT успешным?
Вопрос звучит так:
Написать скрипт, который пытается вставить новую категорию под названием «гитара» в таблицу Категории. Если вставка прошла успешно, сценарий должен отображать это сообщение: УСПЕХ: Запись была вставлена.
Если обновление не увенчалось успехом, сценарий должен отображать сообщение что-то вроде этого: FAILURE: Запись не была вставлена. Ошибка 2627: Нарушение ограничения UNIQUE KEY 'UQ_ Категория _8517B2E0A87CE853'. Невозможно вставить дубликат ключа в объект 'dbo.Categories'. Дубликат ключевое значение (гитары).
В настоящее время таблица этих категорий состоит из 2 столбцов: Категории и имя категории. Он заполняется значениями
1 Guitars
2 Basses
3 Drums
4 Keyboards
Очевидно категории Гитары, что вопрос хочет вставить уже есть, так что я предполагаю, что вся суть вопроса в том, чтобы получить его, чтобы напечатать сообщение об ошибке. Логика вопроса кажется довольно простой; вставьте категорию гитар в таблицу. Если вставка прошла успешно, напечатайте такую-то. Если это было неудачно, напечатайте так себе и так. Я просто не уверен в синтаксисе. Вот 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).'
Я чувствую, что не было бы какое-то логическое уравнение в том, что, если заявление (IF INSERT = успех, ЕСЛИ успех = TRUE, и т.д.), но я «Просто не знаю, как это написать. Я на правильном пути?
EDIT: Я должен упомянуть, я использую SQL Server 2012
Вы используете MySQL или сервер SQL? Это не одно и то же. –
SQL Server 2012, если быть точным – EJF