-
> DiamondShark © (29.08.08 13:28) [22]
+1
-
> Особенно про ХП? Знаю такой стиль - применение ХП вместо
> DML.
что геморройного?
> Мало того, что это геморрой, но еще и обрубает все пути
> автоматизации генерирования этих DML средами разработки.
>
а что, средства разработки уже умеют делать что-то сложнее, чем нагенерить insert-update-delete одной таблицы, да и то при insert не зная откуда ключ взять?
-
>DiamondShark © (29.08.08 17:27) [58]
Какое доскональное знание предмета ! Сразу чувствуется гигантский практический опыт.
-
> Отследите-ка логическую ошибку "кольцевой связи" (т.е. если
> экземпляр сущности А является родительским для В. В - родительским
> для С. С - родительским для А).
"тоже мне бином Ньютона"
update потом select ... start with PARENT_ID = :1
если ошибка, то цикл
-
XentaAbsenta © (29.08.08 20:08) [59]
интересно.
-
> Petr V. Abramov © (31.08.08 00:54) [63]
> "тоже мне бином Ньютона"
> update потом select ... start with PARENT_ID = :1
> если ошибка, то цикл
1. Сколько СУБД понимают "
select ... start with PARENT_ID = :1
"?
2. Нужен ли клиенту СУБД весь этот сыр-бор с селектами/апдэйтами?
3. Есть ли вероятность того, что между апдэйтом, селектом и реакцией на ошибку, кто-то из клиентов поимеет и употребит во зло измененную запись вместе с ошибкой?
-
> Petr V. Abramov © (31.08.08 00:54) [63]
И...? в случае ошибки программа зависнет в цикле? Так будете отлавливать?
-
XentaAbsenta © (29.08.08 20:08) [59]
> ТРИГГЕРЫ ЗЛО
> ТРИГГЕРЫ ЗЛО
> ТРИГГЕРЫ ЗЛО
> ТРИГГЕРЫ ЗЛО
> ТРИГГЕРЫ ЗЛО
>
> Если кому будет интересно - обосную
Ламерам удавиться и сдохнуть
-
>Игорь Шевченко © (01.09.08 14:13) [67]
>> ТРИГГЕРЫ ЗЛО
В некоторых случаях 100%
>Ламерам удавиться и сдохнуть
Как и некоторым здешним "академикам" ;)
-
> Cobalt (01.09.08 14:12) [66]
>
> > Petr V. Abramov © (31.08.08 00:54) [63]
>
> И...? в случае ошибки программа зависнет в цикле? Так будете
> отлавливать?
Ты не понял. Если сервер сообщит об ошибке, то допущен цикл в связке.
А вообще каждый инструмент хорош при его правильном использовании. Триггер нужен на своем месте, хп на своем.
-
> Курдль (01.09.08 14:06) [65]
> 1. Сколько СУБД понимают "select ... start with PARENT_ID
> = :1"?
одна :)
> 2. Нужен ли клиенту СУБД весь этот сыр-бор с селектами/апдэйтами?
КЛИЕНТУ - не нужен, для того хранимки и придумали
> 3. Есть ли вероятность того, что между апдэйтом, селектом
> и реакцией на ошибку, кто-то из клиентов поимеет и употребит
> во зло измененную запись вместе с ошибкой?
если после update не всобачен commit - то нету
> Cobalt (01.09.08 14:12) [66]
> > Petr V. Abramov © (31.08.08 00:54) [63]
>
> И...? в случае ошибки программа зависнет в цикле? Так будете
> отлавливать?
нет, select вызовет ошибку, код не помню
-
> Petr V. Abramov © (01.09.08 16:18) [70]
> нет, select вызовет ошибку, код не помню
А не вернет ли пустой набор?
Если ты имеешь в виду ораклевый
connect by prior start with
...
-
> А не вернет ли пустой набор?
> Если ты имеешь в виду ораклевый connect by prior start with...
Нет, вызовет исключение.
-
> Курдль (01.09.08 16:36) [71]
нет, именно ошибку
ORA-01436: CONNECT BY loop in user data
-
поп факту ж.. в данных можно найти с помощью
CONNECT_BY_ISCYCLE pseudocolumn
и
CONNECT BY NOCYCLE PRIOR
но:
в 10.2.ххх работает стабильно, в 8.1.7.4 нету.
-
>XentaAbsenta © (29.08.08 20:08) [59]
>Категорично против триггеров,
>категорично против транзакций в триггерах!
с удовольствием послушаю о причинах
да, и где записывают в вашу секту?
-
> Petr V. Abramov © (01.09.08 16:18) [70]
> КЛИЕНТУ - не нужен, для того хранимки и придумали
Для чего? У меня есть фигова туча наработок под клиенты и апп.серверы - целые классы, даже скажу пафоснее - паттерны! Они расшифровывают мои замысловатые многотабличные датасэты, чтобы сгенерировать DML. Они подстраиваются под конкретную СУБД и конкретный драйвер соединения. Они исправно работают от проекта к проекту и еще и совершенствуются в своем универсализме. А ты хочешь, чтобы я взял каменный топор и пошел писать "хранимки" под каждый датасэт?
Вот без триггеров представить себе работу не могу... Рад бы от них отказаться - но не получается.
-
> даже скажу пафоснее - паттерны!
... чтобы сгенерировать DML
позволю себе опошлить: == "шаблоны хранимок" в профиль
:)))
> А ты хочешь, чтобы я взял каменный топор и пошел писать "хранимки" под каждый датасэт?
а если что-то в шаблон не укладывается, то на pl/sql писать проще, чем извращаться на студии или дельфях.
Конечно, если надо делать что-то СУБД-независимое, твой подход получается верным.
Но если не надо, то проще пользоваться мощнейшим pl/sql`ем, чем C# или VB, которые для работы с реляционными данными просто не заточены
-
> Petr V. Abramov © (02.09.08 13:44) [77]
> чем C# или VB, которые для работы с реляционными данными
> просто не заточены
ADO.NET для работы с реляционными данными заточены!
На то есть датасэты с реляциями.
-
> На то есть датасэты с реляциями.
а что делать-то с этими реляциями?
foreign-ключи на клиенте проверять?
растолкуй смысл, я его действительно не понимаю