Удалить несколько записей с одинаковым порядковым номером

#sql-server

#sql-сервер

Вопрос:

Я хочу удалить записи с одинаковым порядковым номером. Например, если у меня есть 10 продуктов с одинаковым номером заказа.Когда я хочу удалить эти десять строк с порядковым номером, отображается ошибка, подобная этой.

 DELETE  FROM [NORTHWND].[dbo].[Orders]
WHERE EmployeeID = 5
  

Сообщение 547, уровень 16, состояние 0, строка 22 Инструкция DELETE конфликтовала
с ограничением ССЫЛКИ «FK_Order_Details_Orders». Конфликт
произошло в базе данных «NORTHWND», таблица «dbo.Сведения о заказе», столбец
‘OrderID’. Выполнение инструкции завершено.

Комментарии:

1. В этом весь смысл ограничений внешнего ключа: они мешают вам удалять данные, на которые ссылаются в другом месте, чтобы сохранить ссылочную целостность: dba.stackexchange.com/questions/153351 /…

2. Что насчет ошибки, вы не понимаете? Вы сказали, что хотите удалить заказы с повторяющимися номерами заказов, но вы ссылаетесь на EmployeeID здесь, а не на OrderID

3. просто пример

4. Вам нужно сначала удалить их данные о заказе, прежде чем удалять эти заказы.

5. Возможно, вам следует изучить концепцию реляционной базы данных, прежде чем пытаться что-либо удалить.

Ответ №1:

Чтобы удалить записи из таблицы заказов, сначала вы должны удалить записи из таблицы «Сведения о заказе», поскольку им не разрешается ссылаться на запись, которая не существует.

 DELETE  FROM [NORTHWND].[dbo].[Order Details]
WHERE OrderID IN (SELECT OrderID FROM [NORTHWND].[dbo].[Order] WHERE EmployeeID = 5)
  

Затем, если нет дополнительных ограничений, вы можете приступить к удалению записи из таблицы заказов.

 DELETE  FROM [NORTHWND].[dbo].[Order]
WHERE EmployeeID = 5
  

Ответ №2:

Не удается удалить bcoz, имеющие отношение к идентификатору в таблице Order_Details (OrderDetails)

 DELETE FROM Order_Details WHERE OrderId IN (SELECT ID FROM Orders WHERE EmployeeId = 5)
DELETE FROM Orders WHERE EmployeeId = 5