Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 SQL запрос, вставить, а затем удалить то, что вставил (insert, delete)  [new]
kvadratnt
Member

Откуда:
Сообщений: 26
Всем привет, помогите пожалуйста исправить ошибки в запросе (сделать так, чтоб работало).
Есть БД её структуру можно посмотреть на прикреплённом скриншоте. Нужно написать запрос.
Формулировка задания:

Удалить все записи о договорах и организация, страна которых "Китай".

Мой вариант:

/*DELETE*/
/*2.1*/
insert into organize_8 (inn_org, nazv, adres, tel, mail, fax, fio_ruk, gor, kod_b, rasch_sch, strana)
values (300654999, 'Unit', 'babkova-301', '990000', 'unit@mail.ru', '990000', 'Jes B.N.', 'Pekin', 10, '50045678912344567999', 'Kitai')
insert into dogovora_8 (nom_d, data_d, data_od, inn_org, kod_m, ysl_pos, prim)
values (100, '01.01.2001', '01.01.2002', 300654999, 11, 'Samovivos', 'normal')

delete from dogovora_8 
where inn_org in (select inn_org from organize_8 where (organize_8.strana='Kitai'))
delete from organize_8
where (organize_8.strana='Kitai')

При выполнении выводиться вот такая ошибка:

(1 row(s) affected)


(1 row(s) affected)

Server: Msg 547, Level 16, State 1, Line 11
DELETE statement conflicted with COLUMN REFERENCE constraint 'FK_prod_tovara_8_dogovora_8'. The conflict occurred in database 'db6542', table 'prod_tovara_8', column 'nom_d'.
The statement has been terminated.
Server: Msg 547, Level 16, State 1, Line 1
DELETE statement conflicted with COLUMN REFERENCE constraint 'FK_dogovora_8_organize_8'. The conflict occurred in database 'db6542', table 'dogovora_8', column 'inn_org'.
The statement has been terminated.

Поля таблицы organize_8:

organize_8

*inn_b bigint
nazv varchar(30)
adres varchar(50)
tel varchar(12)
mail varchar(30)
fax varchar(15)
fio_ryk varchar(50)
gor varchar(20)
str varchar(20)
kod_b bigint
rasch_sch char(20)

Поля таблицы dogovora_8:

dogovora_8

*nom_d tinyint
data_d smaldatetime
data_od smalldatetime
inn_org bigint
kod_m tinyint
ysl_pos varchar(20)
prim varchar(30)
9 июн 09, 18:07    [7282664]     Ответить | Цитировать Сообщить модератору
 Re: SQL запрос, вставить, а затем удалить то, что вставил (insert, delete)  [new]
kvadratnt
Member

Откуда:
Сообщений: 26
Ещё вспомнил, когда все таблицы были уже заполнены я переименовал поле str на strana, т.к. видать это какое-то зарезервированное слово.
9 июн 09, 18:11    [7282678]     Ответить | Цитировать Сообщить модератору
 Re: SQL запрос, вставить, а затем удалить то, что вставил (insert, delete)  [new]
kvadratnt
Member

Откуда:
Сообщений: 26
Что-то скрин не прикрепился, вот залил его на дамп. http://dump.ru/file/2872446
9 июн 09, 18:13    [7282685]     Ответить | Цитировать Сообщить модератору
 Re: SQL запрос, вставить, а затем удалить то, что вставил (insert, delete)  [new]
PaulYoung
Member

Откуда: Москва
Сообщений: 2549
автор,

Вам сервер ясно сообщает, что на удаляемые записи имеются ссылки в соответствующих таблицах "prod_tovara_8" и "dogovora_8"
9 июн 09, 18:17    [7282714]     Ответить | Цитировать Сообщить модератору
 Re: SQL запрос, вставить, а затем удалить то, что вставил (insert, delete)  [new]
DeColo®es
Member

Откуда: Москва
Сообщений: 5499
Блог
Вы текст сообщения об ошибке сами прочитать пробовали?
9 июн 09, 18:18    [7282723]     Ответить | Цитировать Сообщить модератору
 Re: SQL запрос, вставить, а затем удалить то, что вставил (insert, delete)  [new]
Romka-Fes
Member

Откуда: Kyiv
Сообщений: 456
kvadratnt,
Тебе же явно написано о причине ошибки.

DELETE statement conflicted with COLUMN REFERENCE constraint 'FK_prod_tovara_8_dogovora_8'. The conflict occurred in database 'db6542', table 'prod_tovara_8', column 'nom_d'.

Похоже что у тебя в таблице prod_tovara_8 используются договоры (их id). А ты их хочешь удалить.

Смотри на свои ограничения целостности и удаляй данные в нужном порядке.

Или меняй constraint 'FK_prod_tovara_8_dogovora_8'.
9 июн 09, 18:25    [7282747]     Ответить | Цитировать Сообщить модератору
 Re: SQL запрос, вставить, а затем удалить то, что вставил (insert, delete)  [new]
kvadratnt
Member

Откуда:
Сообщений: 26
Romka-Fes
kvadratnt,
Тебе же явно написано о причине ошибки.

DELETE statement conflicted with COLUMN REFERENCE constraint 'FK_prod_tovara_8_dogovora_8'. The conflict occurred in database 'db6542', table 'prod_tovara_8', column 'nom_d'.

Похоже что у тебя в таблице prod_tovara_8 используются договоры (их id). А ты их хочешь удалить.

Смотри на свои ограничения целостности и удаляй данные в нужном порядке.

Или меняй constraint 'FK_prod_tovara_8_dogovora_8'.


Я тебя не совсем понял, объясни?
9 июн 09, 19:33    [7283006]     Ответить | Цитировать Сообщить модератору
 Re: SQL запрос, вставить, а затем удалить то, что вставил (insert, delete)  [new]
Ken@t
Member

Откуда: 大地
Сообщений: 3264
kvadratnt

insert into organize_8 (inn_org, nazv, adres, tel, mail, fax, fio_ruk, gor, kod_b, rasch_sch, strana)
values (300654999, 'Unit', 'babkova-301', '990000', 'unit@mail.ru', '990000', 'Jes B.N.', 'Pekin', 10, '50045678912344567999', 
'Kitai')

верх неуважения.
ограничения целостности, удалите соответствующие записи из 'prod_tovara_8', 'dogovora_8' ссылающиеся на organize_8.
9 июн 09, 19:51    [7283049]     Ответить | Цитировать Сообщить модератору
 Re: SQL запрос, вставить, а затем удалить то, что вставил (insert, delete)  [new]
kvadratnt
Member

Откуда:
Сообщений: 26
Подскажите ещё одну мелочь если не затруднит? Что нужно скачать и установить, чтоб можно было самому построить таблицы, связи и проверить этот и подобные запросы в домашних условиях? А то работаем в техникуме. Там сеть и все таблицы, диаграмы и т.п. хранятся на сервере(на отдельном компе) а со своих рабочих машин пишем только запросы. Удалённые Базы Данных называется предмет.
9 июн 09, 22:57    [7283396]     Ответить | Цитировать Сообщить модератору
 Re: SQL запрос, вставить, а затем удалить то, что вставил (insert, delete)  [new]
Ray D
Member

Откуда: from the middle of nowhere
Сообщений: 3598
Блог
В техникуме?! О хоспади...

Embarcadero ER/Studio, ERWin и др
9 июн 09, 23:01    [7283402]     Ответить | Цитировать Сообщить модератору
 Re: SQL запрос, вставить, а затем удалить то, что вставил (insert, delete)  [new]
Ray D
Member

Откуда: from the middle of nowhere
Сообщений: 3598
Блог
А вообще-то ерунду сказал -- SQL Server Express with Advanced Services, и пользуйте встроенный diagramming tool на здоровье, пишите запросы.
9 июн 09, 23:03    [7283406]     Ответить | Цитировать Сообщить модератору
 Re: SQL запрос, вставить, а затем удалить то, что вставил (insert, delete)  [new]
kvadratnt
Member

Откуда:
Сообщений: 26
Большое спасибо ребят за ценные советы.
10 июн 09, 23:30    [7288039]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить