![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 01.05.2009
Сообщений: 37
|
![]()
Всем Привет!
Помогите решить такую вот проблему: В общем есть кусочек базы данных, задействовано 4 таблицы, одна главная с ключом us_id, одна ассоциативная с внешним us_id и cab_id, соттветственно cab_id из таблицы cabinets, так вот задача заключается в том чтобы удаляя или модифицируя записи в главной таблице users, изменения происходили и в таблице(ассоциативной) cab_users. Написал для удаления storedproc в котором сразу удаляются записи из 2 таблиц, так он ругается, сделал по-другому, создал 2 storedproc, причем сначала удаляю записи в ассоциативной в первом storedproc, и потом если первый stored proc выполнился, выполняю storedproc второй по удалению из главной таблице, той записи, которая соотв. удал-му us_id в первой. - так все выходит. вот первый: CREATE PROCEDURE dobdelus( @usid bigint) AS delete from cab_users where us_id=@usid and cab_id=0 GO вот второй CREATE PROCEDURE delus2( @usid bigint) AS delete from cab_users where us_id=@usid GO Не думаю что так все правильно, да и емко, не подскажете что мешает удалению записей, если эти две процедуры совмещать в одну, и как лучше сделать, и еще почему когда работаешь со storedproc и начинаешь запускать ее в delphi, всегда возникает ошибка: Parameter '@usid' not found. или not supplied?
mol4ok
|
![]() |
![]() |
![]() |
#2 |
SQL-коддинг
Участник клуба
Регистрация: 16.01.2009
Сообщений: 1,192
|
![]()
1) ошибки при объединении кода двух процедур из-за того, что данные, которые ты пытаешся удалить из родительской таблицы есть в дочерней, но в другой записи/записях
т.е. тебе нужно еще делать доп.проверку - узнать есть ли такие записи в дочерней и если нет, то удалить в родительской вот только почему-то у тебя в обеих процедурах прописана одна и та же таблица... 2) параметр в дельфаке скорее всего надо указывать под именем 'usid' |
![]() |
![]() |
![]() |
#3 | |
Пользователь
Регистрация: 01.05.2009
Сообщений: 37
|
![]() Цитата:
Про проверку, конечно в принципе понял, нужно будет подумать над созданием проверки. Спасибо.
mol4ok
|
|
![]() |
![]() |
![]() |
#4 |
SQL-коддинг
Участник клуба
Регистрация: 16.01.2009
Сообщений: 1,192
|
![]() |
![]() |
![]() |
![]() |
#5 |
Пользователь
Регистрация: 01.05.2009
Сообщений: 37
|
![]()
Я с этим незнаком, особкенно с препаре, - это подготовка что-ли? Или проверка этой процедуры, знаете у меня еще один давно назревший и мучающий меня вопрос есть, может сталкивались с этой проблемой. Вот создаю приложение на delphi, база на sql server 2000. Работа объемная, так как это диплом, и поэтому очень много stored proc приходится создавать, на обновление таблиц, удаление, и почти каждая процедура при компиляции ругается, типа Parameter '@usid' not found. или not supplied. Потом что-то потыкаю, поперебираю и каким-то образом начинает все работать, а в чем проблема я так и не понял, не сталкивались с такой проблебой?
mol4ok
|
![]() |
![]() |
![]() |
#6 |
SQL-коддинг
Участник клуба
Регистрация: 16.01.2009
Сообщений: 1,192
|
![]()
думаю, что ошибки исчезают когда ты тыкаешь в компонент и считываешь его параметры, но они снова появятся если ты добавишь/переименуешь существующие параметры
короче, работа с ХП (хранимые процедуры) такая: Код:
Код:
Последний раз редактировалось soleil@mmc; 01.05.2009 в 20:22. |
![]() |
![]() |
![]() |
#7 | |
Пользователь
Регистрация: 01.05.2009
Сообщений: 37
|
![]() Цитата:
mol4ok
|
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
каскадное удаление | Skolot | Microsoft Office Access | 0 | 20.04.2009 11:12 |
модификация программы | olla-la | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 1 | 10.05.2008 14:01 |
Каскадное удаление | BustA | SQL, базы данных | 1 | 16.01.2008 10:31 |