Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Сравнение СУБД Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2 3 4 5 6 7 8 9 10 .. 25   вперед  Ctrl
 Нужна помощь  [new]
hamjak
Member

Откуда:
Сообщений: 11
На работе, для автоматизации, требуется программный комплекс с клиент-серверной архитектурой... есно бесплатно (начальство денег платить никак не хочет)
Выбор стоит между MySQL и FireBird.
Клиент на C# (MS VS 2005)
Написал всю БД в MySQL... но потом выяснилось что в триггерах невозможно использовать операторы отката или завершения транзакции. А мне это нужно. Вышел из ситуации путем создания исключения(ошибки) в триггере BEFORE INSERT.
FireBird еще не пробовал.
До этого работал только c MS SQL Server(Пиратка)
Вопрос:
1. Действительно ли MySQL не поддерживает применение операторов отмены и завершеня транзакции в триггере? В ближайших версиях ожидается поддержка вышеописанной функции?
2. Кто реально работал с обеими СУБД(MySQL и FireBird) может что посоветовать?
Ответы вида: "Всю жизнь на MySQL, о FireBird только по слухам просьба не давать".
Диспут на тему FireBird vs MySQL тоже не нужен
... только советы профессионалов

Количество одновременных подключений не более ~46. Активное использование SELECT(~!70%), INSERT(~10%)
24 авг 08, 02:44    [6102782]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь  [new]
SergSuper
Member

Откуда: SPb
Сообщений: 5488
а почему бы Вам в соответствующий форум и не обратиться?
24 авг 08, 12:23    [6102894]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 54800

hamjak
До этого работал только c MS SQL Server(Пиратка)
.... только советы профессионалов

Скачай бесплатную MS SQL Express версию и оставайся на ней. Это не шутка
- управление транзакциями в триггерах возможно только в MS SQL.

Posted via ActualForum NNTP Server 1.4

24 авг 08, 14:32    [6102951]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь  [new]
hamjak
Member

Откуда:
Сообщений: 11
Dimitry Sibiryakov

Скачай бесплатную MS SQL Express версию и оставайся на ней...


Экспресс качал... там по моему ограничение на размен таблицы. Проект связан с постоянным пополнением данных от подотчетных организаций и учреждений... а их порядка 130 штук. Рост БД ожидается приличный. Ограничение на размер таблицы не катят.
Я бы так и остался на пиратском MS SQL Server, но прокуратура подбирается:-) и так и хочет за 5 точку больно укусить:-). Начальство сказало убрать все что нелицензионное в том числе и мой любимый MS SQL Server. Старые приложения на новую СУБД переписать не проблема... там всякая мелочевка. Но вот выбор СУБД - это проблема.
24 авг 08, 15:50    [6103048]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь  [new]
AAron
Member

Откуда: Москва
Сообщений: 4324
вообще странный подход, проектировать БД так, что отмена транзакций была в триггерах.

Возьмите Oracle, там нет ограничений на размер БД.
24 авг 08, 16:07    [6103063]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь  [new]
hamjak
Member

Откуда:
Сообщений: 11
AAron
вообще странный подход, проектировать БД так, что отмена транзакций была в триггерах

Чтож тут странного то?!
Я конечно не спец, но еще вроде как в своем уме
Возьмем к примеру таблицу пользователей
Если значение поля Login новой добавляемой записи найдено в соответствующем поле таблицы, то отменить транзакцию.
Или я не прав?
Если есть идеи как положено делать в таких случаях, то скажите плиз. Буду только рад изучить что то новое!
24 авг 08, 16:50    [6103105]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 54800

hamjak
Я конечно не спец, но еще вроде как в своем уме

Вот тут ты заблуждаешься: ты не в своём уме - ты в мелкомягком уме.
Нормальные люди используют Unique Constraints и вообще не трогают
триггера в случаях вроде выгеописанного.

Posted via ActualForum NNTP Server 1.4

24 авг 08, 17:06    [6103124]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь  [new]
hamjak
Member

Откуда:
Сообщений: 11
Dimitry Sibiryakov

hamjak
Я конечно не спец, но еще вроде как в своем уме

Вот тут ты заблуждаешься: ты не в своём уме - ты в мелкомягком уме.
Нормальные люди используют Unique Constraints и вообще не трогают
триггера в случаях вроде выгеописанного.
Posted via ActualForum NNTP Server 1.4


Ага... вот с этого момента чуть поподробней объясни плиз. Все же на MySQL ужу всю БД нарисовал. На другой лень перекидывать!
И еще глупый вопрос: Как в MySQL сделать загрузку скрипта из файла? Точнее как понятно, но куда копировать сам файл скрипта непонятно. Прописывал и путь и все, но постоянно пишет, что не может найти файл.
24 авг 08, 17:14    [6103132]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь  [new]
hamjak
Member

Откуда:
Сообщений: 11
точнее немного неправильно спросил... торможу.
при вышеописанном простейшем случае это понятно...
а что делать если условием добавления записи является выборка из другой таблицы?
Например:
Возьмем ИС больница.
имеется 2 таблицы: таблица пациентов и таблица палат.
из интересующих нас характеристики в таблице палат: количество койкомест, а из таблицы пациентов код палаты(номер палаты, т.к. они тоже уникальны в каждом отделении) в которой лежит или будет лежать пациент.
Соответственно при поступлении больного нужно распределить его в палату. Пишем триггер: если количество свободных мест в палате равно 0, то откат транзакции в таблице пациент и таблице палаты, вывод сообщения и т.д. Конечно можно создать соответствующую хранимую процедуру и использовать ее. Но ведь триггер для того и есть что бы смотреть за целостностью логики данных в таблице и БД вцелом. Вот как реализовать подобный триггер в MySQL??? Из известных мне только вызов ошибки. Вы все с этим дольше работаете мож что и подскажете.
24 авг 08, 18:20    [6103181]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь  [new]
MasterZiv
Member

Откуда: Питер
Сообщений: 34709

Dimitry Sibiryakov wrote:
> Скачай бесплатную MS SQL Express версию и оставайся на ней. Это не шутка
> - управление транзакциями в триггерах возможно _только_ в MS SQL.

Это какое-то очень сильное заявление. Как минимум, ещё в одной СУБД в мире
есть такая же возможность.

Posted via ActualForum NNTP Server 1.4

24 авг 08, 19:05    [6103217]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь  [new]
MasterZiv
Member

Откуда: Питер
Сообщений: 34709

Dimitry Sibiryakov wrote:

>
> Вот тут ты заблуждаешься: ты не в своём уме - ты в мелкомягком уме.
Ты думаешь в MSSQL нет UNIQUE CONSTRAINTS ?
Он их, видимо, просто не знает. Хотя может быть и мы не правы - он
не сказал, ни в какой таблице (может - в другой, тогда это - FK),
ни в каком поле (может - в другом, тогда это какой-то бизнес-рул вообще).

Posted via ActualForum NNTP Server 1.4

24 авг 08, 19:08    [6103221]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь  [new]
MasterZiv
Member

Откуда: Питер
Сообщений: 34709

hamjak wrote:
Как в MySQL сделать загрузку скрипта из файла?

mysql -S ... < my_script_file.sql

Use redirection, Luke !

Posted via ActualForum NNTP Server 1.4

24 авг 08, 19:10    [6103224]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь  [new]
hamjak
Member

Откуда:
Сообщений: 11
Лан, а по триггерам в MySQL мож кто че скажет?
24 авг 08, 20:29    [6103308]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь  [new]
AAron
Member

Откуда: Москва
Сообщений: 4324
Dimitry Sibiryakov

hamjak
Я конечно не спец, но еще вроде как в своем уме

Вот тут ты заблуждаешься: ты не в своём уме - ты в мелкомягком уме.
Нормальные люди используют Unique Constraints и вообще не трогают
триггера в случаях вроде выгеописанного.

это очень сильное заявление.... особенно про мелкомягкий ум... причем здесь MS?
на мой взгляд, автор неправильно подошел к проектированию логики БД, но опять же, причем здесь MS (или другие СУБД)
24 авг 08, 21:57    [6103373]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь  [new]
hamjak
Member

Откуда:
Сообщений: 11
AAron
это очень сильное заявление.... особенно про мелкомягкий ум... причем здесь MS?
на мой взгляд, автор неправильно подошел к проектированию логики БД, но опять же, причем здесь MS (или другие СУБД)

В чем я не правильно подошел? Как меня учили в триггерах откаты делать так я и делаю! Спрашиваю у вас как с вышеописанным примером работать в MySQL... но тишина.
Объясните мне мою ошибку!!!!
И если в Справочнике администратора SQL Server 2000 описано, что в триггерах можно делать откат, то ОБЪЯСНИТЕ МНЕ где в проектировании МОЖЕТ быть ошибка!!! Если этим не пользовались никогда, то не надо говорить, что то там про то что неправильно спроектирована БД. Я не спец в администрировании серверов и их обслуживании, но то как правильно БД спроектить я знаю. Так может спецы по MySQL мне что нить объяснят????
24 авг 08, 22:14    [6103389]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 54800

hamjak
Так может спецы по MySQL мне что нить объяснят????

Выбрасывание исключения - абсолютно нормальный механизм. Транзакциями
управляет клиент поскольку у него больше информации.

Posted via ActualForum NNTP Server 1.4

24 авг 08, 23:34    [6103471]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь  [new]
hamjak
Member

Откуда:
Сообщений: 11
Dimitry Sibiryakov

hamjak
Так может спецы по MySQL мне что нить объяснят????

Выбрасывание исключения - абсолютно нормальный механизм. Транзакциями
управляет клиент поскольку у него больше информации.

Спасибо за информацию. Поставлю систему на MySQL(просто мне сказали, что MySQL позиционирует себя только для WEB... посмотрим что получится), а там посмотрим что получится.
Кстати система планируется у меня как OpenSource, так что все исходники выложу (за исключением системы безопасности, но и без нее будет работать). Понадобится помощь - обращусь. За дельный совет включу в состав разработчиков. СПС всем.
24 авг 08, 23:49    [6103482]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь  [new]
vadiminfo
Member

Откуда: Обнинск
Сообщений: 4802
hamjak
В чем я не правильно подошел? Как меня учили в триггерах откаты делать так я и делаю! Спрашиваю у вас как с вышеописанным примером работать в MySQL... но тишина.
Объясните мне мою ошибку!!!!

Вам же уже объяснили. Есть декларативные ограничения целостности, которые поддерживают СУБД. В частности поддержка уникальности значений поддерживается в РСУБД как классика.
Оно типа в РМД входит с самого ее появления.
Триггера применяют тока када ОЦ нельзя обеспечить декларативно. Причины обсуждались када-то.
Другое дело, что при нарушении декларативно, обеспечиваемых ОЦ во многих СУБД не предусмотренны только системные сообщения, малопонятные юзеру (а иногда и проггерам). Но все равно триггер хуже.
25 авг 08, 00:01    [6103491]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь  [new]
Arbuz
Member

Откуда: Россия
Сообщений: 49
Потыкайте FireBird
Там есть уникальные вещи, что касается транзакций, может быть Вам понравится.
25 авг 08, 00:39    [6103535]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь  [new]
Arbuz
Member

Откуда: Россия
Сообщений: 49
Потыкайте FireBird
Там есть уникальные вещи, что касается транзакций, может быть Вам понравится.
25 авг 08, 00:40    [6103539]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь  [new]
AAron
Member

Откуда: Москва
Сообщений: 4324
и какие же там есть уникальные вещи?
25 авг 08, 01:32    [6103606]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь  [new]
Bogdanov Andrey
Member

Откуда: Да уже и сам не знаю...
Сообщений: 2203
hamjak
В чем я не правильно подошел? Как меня учили в триггерах откаты делать так я и делаю!
И кто вас учил в триггерах делать откат?
hamjak
Объясните мне мою ошибку!!!!
Управлять транзакцией из тригера в общем-то идеологически неверно. Конечно, бывают случаи, когда это может пригодиться, но такие случаи крайне редки. Закрывать или откатывать транзакцию должен тот, кто ее открывал. Триггер не имеет никаких сведений о том какие операторы выполнялись до того, который вызвал рабатывания триггера и соответственно ничего не знает о том можно или нет эти операторы откатывть или фиксировать.
Если триггер "считает", что один оператор выполнять нельзя, то он просто должен честно сообщить об этом вызвавшему приложению, то есть поднять исключение. Сам оператор при этом, естественно, не выполнится, а уж как приложение отреагирует на исключение - это дело приложения.
25 авг 08, 09:41    [6103896]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь  [new]
MasterZiv
Member

Откуда: Питер
Сообщений: 34709

hamjak wrote:

> Объясните мне мою ошибку!!!!
> И если в Справочнике администратора SQL Server 2000 описано, что в
> триггерах можно делать откат, то ОБЪЯСНИТЕ МНЕ где в проектировании
> МОЖЕТ быть ошибка!!!

Да не горячись ты, даже если ты что-то делаешь не совсем так, как делают
другие, это еще не повод говорить, что так делать нельзя.

Триггеров в MySQL я к сож. не писал, увы.

Posted via ActualForum NNTP Server 1.4

25 авг 08, 11:02    [6104187]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь  [new]
MasterZiv
Member

Откуда: Питер
Сообщений: 34709

hamjak wrote:

>
> Спасибо за информацию. Поставлю систему на MySQL(просто мне сказали, что
> MySQL позиционирует себя только для WEB... посмотрим что получится),

Это - бред, чушь несусветная.

Posted via ActualForum NNTP Server 1.4

25 авг 08, 11:03    [6104190]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь  [new]
SergSuper
Member

Откуда: SPb
Сообщений: 5488
Bogdanov Andrey
hamjak
В чем я не правильно подошел? Как меня учили в триггерах откаты делать так я и делаю!
И кто вас учил в триггерах делать откат?
hamjak
Объясните мне мою ошибку!!!!
Управлять транзакцией из тригера в общем-то идеологически неверно. Конечно, бывают случаи, когда это может пригодиться, но такие случаи крайне редки. Закрывать или откатывать транзакцию должен тот, кто ее открывал. Триггер не имеет никаких сведений о том какие операторы выполнялись до того, который вызвал рабатывания триггера и соответственно ничего не знает о том можно или нет эти операторы откатывть или фиксировать.
Если триггер "считает", что один оператор выполнять нельзя, то он просто должен честно сообщить об этом вызвавшему приложению, то есть поднять исключение. Сам оператор при этом, естественно, не выполнится, а уж как приложение отреагирует на исключение - это дело приложения.

Это только Ваша точка зрения.
А я к примеру считаю что триггеры обеспечивают целостность базы и транзакцию, которая целостность нарушает они должны обрывать, независимо от того что там думает приложение.
25 авг 08, 11:16    [6104260]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2 3 4 5 6 7 8 9 10 .. 25   вперед  Ctrl
Все форумы / Сравнение СУБД Ответить