|
не удалять данные по внешним ключам
|
|||
---|---|---|---|
#18+
в базе данных есть таблицы Контрагент , Организация и Договор. в таблице договор создала внешний ключ к таблицам контрагент и организация. подскажите как реализовать следующее при попытке изменении записи в таблице контрагент и организация- выдавать предупреждение если данные используются в таблицы Договор. подскажите как это кодом проверяется .... ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2013, 22:45 |
|
не удалять данные по внешним ключам
|
|||
---|---|---|---|
#18+
Tanya_0306в базе данных есть таблицы Контрагент , Организация и Договор. в таблице договор создала внешний ключ к таблицам контрагент и организация. подскажите как реализовать следующее при попытке изменении записи в таблице контрагент и организация- выдавать предупреждение если данные используются в таблицы Договор. подскажите как это кодом проверяется .... Внешний ключ - одно из средств поддержания ссылочной целостности в базах данных. Его использование уже само по себе является необходимым и достаточным решением для Вашей задачи - в подавляющем большинстве случаев. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2013, 00:30 |
|
не удалять данные по внешним ключам
|
|||
---|---|---|---|
#18+
sphinx_mvВнешний ключКак это поможет "попытке изменении записи" ? >>> Tanya_0306 проверить наличие Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2013, 00:42 |
|
не удалять данные по внешним ключам
|
|||
---|---|---|---|
#18+
sphinx_mv, Может я не совсем понятно выразила постановку задачи. Пользователь начинает редактировать данные в таблице Организация, когда нажимает на кнопку сохранить - мне надо его предупредить что эти данные уже используются в таблице Договор и спросить - действительно сохранить изменения? Если он подтвердит изменения - то все данные каскадно поменяются. Ссылочную целостность таблиц я настроила. И так же при удалении - захочет пользователь удалить запись в таблице организации - надо проверить не используется ли эта запись в таблице Договор, если не используется то просто удалить. Иначе спросить - "действительно удалить запись и все все связанные с ней данные???". Подтвердить - удалить из таблицы Организации ? если да - то каскадно удалить записи из таблицы Организация и договоры. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2013, 07:29 |
|
не удалять данные по внешним ключам
|
|||
---|---|---|---|
#18+
Tanya_0306sphinx_mv, Может я не совсем понятно выразила постановку задачи. Пользователь начинает редактировать данные в таблице Организация, когда нажимает на кнопку сохранить - мне надо его предупредить что эти данные уже используются в таблице Договор и спросить - действительно сохранить изменения? Если он подтвердит изменения - то все данные каскадно поменяются. Ссылочную целостность таблиц я настроила. И так же при удалении - захочет пользователь удалить запись в таблице организации - надо проверить не используется ли эта запись в таблице Договор, если не используется то просто удалить. Иначе спросить - "действительно удалить запись и все все связанные с ней данные???". Подтвердить - удалить из таблицы Организации ? если да - то каскадно удалить записи из таблицы Организация и договоры.А что, параметризованные запросы нынче уже не используют? Каким образом Вы настроили ссылочную целостность таблиц? Можете привести для примера SQL скрипт создания таблиц и внешних ключей? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2013, 07:46 |
|
не удалять данные по внешним ключам
|
|||
---|---|---|---|
#18+
Tanya_0306, Тетенька, зачем вы трогаете уникальный идентификатор записи? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2013, 07:56 |
|
не удалять данные по внешним ключам
|
|||
---|---|---|---|
#18+
Tanya_0306, ИМХО: Пользователям удалять организацию - это жестоко, лучше за маркировать запись как на удаление, а эту привилегию оставить root_у, мало ли глупых куриц которые готовы поиграться с кнопочкой удалить... ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2013, 08:08 |
|
не удалять данные по внешним ключам
|
|||
---|---|---|---|
#18+
Alex Kuznetsov, Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52.
Я новичок в С#, подскажите какие параметризованные запросы мне создать?? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2013, 08:26 |
|
не удалять данные по внешним ключам
|
|||
---|---|---|---|
#18+
Где-то в степи, Это было бы идеальный вариант. А механизм "маркирования записи". Это что-то типа завести в таблице поле - признак "запись удалена"? И при работе в приложении давать возможность пользователю помечать на удаление? Я правильно понимаю? А можно по подробнее про root ? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2013, 08:34 |
|
не удалять данные по внешним ключам
|
|||
---|---|---|---|
#18+
Где-то в степи, Можно без "Тетеньки". В качестве уникального идентификатора записи используется текстовое поле. Это не моя идея, выше стоящее руководство так требует. Я бы создала идентификатор - код, инкрементное поле. Но начальник сказал - НЕТ. ЗАЧЕМ?? Пусть вводят текстовое поле - этого достаточно. К примеру справочник Еденицы Измерения : идентификатор - кг наименование - Килограммы Ну и соответственно пользователь может решить изменить "кг" на "Кг." Примерно такая ситуация .... ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2013, 08:40 |
|
не удалять данные по внешним ключам
|
|||
---|---|---|---|
#18+
Tanya_0306, До свидания... ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2013, 08:48 |
|
не удалять данные по внешним ключам
|
|||
---|---|---|---|
#18+
Где-то в степи, Зачем же сразу До свидания. Если не правильная логика - подскажите. Пример с "кг" я утрировала ... ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2013, 08:58 |
|
не удалять данные по внешним ключам
|
|||
---|---|---|---|
#18+
Tanya_0306, Тащите начальника сюда )) ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2013, 09:05 |
|
не удалять данные по внешним ключам
|
|||
---|---|---|---|
#18+
Tanya_0306, О параметрах запросов лучше почитать MSDN. Немного конкретизирую под Вашу задачу: Перед непосредственно удалением записи из таблиц Companies или Clients выполнить запросы вида: Код: sql 1. 2. 3. 4. 5.
или Код: sql 1. 2. 3. 4. 5.
Проверить наличие записей в выходном наборе данных, при необходимости показать их и сделать запрос на подтверждение удаления. Если же просто нужно проверить наличие записей, то можно и так как Relic Hunter предложил: Код: sql 1. 2. 3.
Далее проверяем возвращаемое значение агрегата ContractsCnt на значение > 0. Про обновление ключевых полей в таблицах Companies и Clients: подумайте, а так-ли уж необходимо обновлять именно ключевые поля? К тому-же странно, что у Вас ключевые поля символьные, получается, что Вы их генерируете самостоятельно или пользователь их сам выдумывает? Не лучше-ли для идентификаторов использовать IDENTITY? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2013, 09:07 |
|
не удалять данные по внешним ключам
|
|||
---|---|---|---|
#18+
Где-то в степиTanya_0306, Тащите начальника сюда ))+100500 Хочется узнать "глубинные" причины такой "постановки задачи" ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2013, 09:10 |
|
не удалять данные по внешним ключам
|
|||
---|---|---|---|
#18+
Alex Kuznetsov, "А почему нет - пусть задает идентификатор как текстовое поле, краткое наименование". ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2013, 09:17 |
|
не удалять данные по внешним ключам
|
|||
---|---|---|---|
#18+
Где-то в степи, Это не реально ... )) ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2013, 09:19 |
|
не удалять данные по внешним ключам
|
|||
---|---|---|---|
#18+
Tanya_0306, не хочу вас обидеть, честное слово, но имхо: я бы это рассматривал как сексуальное домогательство ( без обид) ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2013, 09:21 |
|
не удалять данные по внешним ключам
|
|||
---|---|---|---|
#18+
Alex Kuznetsov, Спасибо!! ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2013, 09:21 |
|
не удалять данные по внешним ключам
|
|||
---|---|---|---|
#18+
2Tanya_0306 Шлите начальника в попу и меняйте работу ))) ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2013, 09:21 |
|
не удалять данные по внешним ключам
|
|||
---|---|---|---|
#18+
Tanya_0306Alex Kuznetsov, "А почему нет - пусть задает идентификатор как текстовое поле, краткое наименование".А потом дать начальнику в руки просто sqlcmd.exe и пусть он исправляет косяки пользователей или сам придумывает уникальные идентификаторы записей ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2013, 09:29 |
|
не удалять данные по внешним ключам
|
|||
---|---|---|---|
#18+
Помню, что когда после университета на первом месте работал, то там тоже такой начальник был. Он 8 лет сидел на одном месте ведущим программистом. Но абсолютно не знал ничего ни про первичные ключи, ни про целостность базы данных, ни про особенности движка, который писали в этой фирме. Но везде лез и заставлял делать так, как он хочет. Причём мне тогда выделили новый проект. И я в одиночку под командованием этого начальника стал его клепать на ихнем движке. Да, кстати, документации вообще никакой не было. Было только несколько старцев, но и они уже давно путались в проекте... Короче, завалили мы тогда проект:) А из той фирмы я сам ушёл, когда через пару лет понял, что ничего у меня здесь хорошего не получится:) ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2013, 10:30 |
|
не удалять данные по внешним ключам
|
|||
---|---|---|---|
#18+
JavaSpringFrameworkHibernateGWT, Начало как в моей истории .... Только вот проект заваливать не хочется ..... Надо разумные доводы привести почему так делать нельзя .... Он говорил про 1с - там кодом (идентификатором может быть и строка и число) и еще Навижен (не работала в нем). Говорит там тоже уникальный код - это может быть краткое наименование (текстовое поле). ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2013, 10:36 |
|
не удалять данные по внешним ключам
|
|||
---|---|---|---|
#18+
Tanya_0306, Что мешает сделать первичный ключ человеческим, а начальнику сказать, что сделала текстовым - пусть радуется? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2013, 11:08 |
|
не удалять данные по внешним ключам
|
|||
---|---|---|---|
#18+
Tanya_0306JavaSpringFrameworkHibernateGWT, Начало как в моей истории .... Только вот проект заваливать не хочется ..... Надо разумные доводы привести почему так делать нельзя .... Он говорил про 1с - там кодом (идентификатором может быть и строка и число) и еще Навижен (не работала в нем). Говорит там тоже уникальный код - это может быть краткое наименование (текстовое поле).Не верьте. В 1С идентификатор записи действительно символьное поле, НО, значение поля генерируется, а не вносится пользователем. А вот КОД может быть сгенерирован и потом изменён пользователем. В Навике то-же самое... Посмотрите структуры таблиц документов 1С непосредственно на сервере БД, а не через окошко в 1С, и поймёте о чём я говорю. Так что, не следует слепо доверять тому, что говорит начальство. Ищите доводы чтобы отказаться от этой глупой затеи... ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2013, 11:09 |
|
|
start [/forum/topic.php?fid=20&msg=38415034&tid=1403932]: |
0ms |
get settings: |
9ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
49ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
57ms |
get tp. blocked users: |
2ms |
others: | 321ms |
total: | 477ms |
0 / 0 |