2013-07-17 1 views
2

У меня есть БД в производстве и были внесены для внесения изменений. Все идет хорошо, за исключением того, что я не могу выполнить DELETE. Я знаю, что это связано с присоединениями и неправильной ссылкой. целостность и т. д., но я не могу этого изменить. ниже ЗЕЬЕСТ выполняет без проблем и отображает в GridView:Ищет заявление о сокращении для этого оператора Select

SELECT 
    [Stock Inventory].MaterialNumber, 
    [Stock Inventory].[Optimum Stock] AS Optimum_Stock, 
    customerservice.Part, 
    customerservice.SamplesRequired, 
    customerservice.Frequency, 
    customerservice.Country 
FROM 
    [Stock Inventory] 
    INNER JOIN customerservice 
    ON [Stock Inventory].MaterialNumber = customerservice.Part 

Я ищу использовать ссылку удалить, которая является частью созданной таблицы Если я не предоставили достаточно информации, пожалуйста, дайте мне знать

+1

Он должен быть 'DELETE FROM S [Stock Inventory] AS ы INNER JOIN customerservice AS c ON s.MaterialNumber = c.Part' –

+0

Ошибка. Я расскажу об этом в ближайшее время, но это то, что было возвращено: инструкция DELETE противоречила ограничению REFERENCE «FK_Stock Movement_Stock Inventory». Конфликт произошел в базе данных «WarehouseSamples», таблице «Движение dbo.Stock», столбец «MaterialNumber». – JohnR

+0

Три вещи: Какую таблицу вы должны удалить из - [Инвентаризация запасов] или клиентов? Какова связь между ними? Существует ли связь между любой из этих таблиц и других таблиц? – OzrenTkalcecKrznaric

ответ

0

Поскольку вы упомянули необходимости удалить из обеих таблиц вы могли бы сделать что-то вроде этого:

begin transaction 

declare @deleted table (MaterialNumber int) --whatever data type you need 
DELETE s 
output deleted.MaterialNumber into @deleted 
    from [Stock Inventory] as s 
    INNER JOIN customerservice as c 
    ON s.MaterialNumber = c.Part 


DELETE c 
from customerservice as c 
join @deleted d 
    on d.MaterialNumber = c.Part  

commit transaction 
+0

Это использует удаленную псевдо-таблицу, чтобы отслеживать идентификаторы, удаленные из таблицы [Stock Inventory] так что вы можете удалить целевые записи из таблицы customerservice. В зависимости от вашей ссылочной целостности вам может потребоваться изменить порядок или настроить каскадное удаление и т. Д. –

Смежные вопросы