Конференция "Базы" » Транзакции в триггере
 
  • Petr V. Abramov © (30.08.08 16:38) [60]

    > DiamondShark ©   (29.08.08 13:28) [22]

    +1
  • Petr V. Abramov © (30.08.08 17:45) [61]

    > Особенно про ХП? Знаю такой стиль - применение ХП вместо
    > DML.
    что геморройного?

    > Мало того, что это геморрой, но еще и обрубает все пути
    > автоматизации генерирования этих DML средами разработки.
    >

    а что, средства разработки уже умеют делать что-то сложнее, чем нагенерить insert-update-delete одной таблицы, да и то при insert не зная откуда ключ взять?
  • MsGuns © (31.08.08 00:40) [62]
    >DiamondShark ©   (29.08.08 17:27) [58]

    Какое доскональное знание предмета ! Сразу чувствуется гигантский практический опыт.
  • Petr V. Abramov © (31.08.08 00:54) [63]

    > Отследите-ка логическую ошибку "кольцевой связи" (т.е. если
    > экземпляр сущности А является родительским для В. В - родительским
    > для С. С - родительским для А).

    "тоже мне бином Ньютона"
    update потом select ... start with PARENT_ID = :1
    если ошибка, то цикл
  • stas © (31.08.08 12:58) [64]
    XentaAbsenta ©   (29.08.08 20:08) [59]
    интересно.
  • Курдль (01.09.08 14:06) [65]

    > 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. Есть ли вероятность того, что между апдэйтом, селектом и реакцией на ошибку, кто-то из клиентов поимеет и употребит во зло измененную запись вместе с ошибкой?
  • Cobalt (01.09.08 14:12) [66]
    > Petr V. Abramov ©   (31.08.08 00:54) [63]

    И...? в случае ошибки программа зависнет в цикле? Так будете отлавливать?
  • Игорь Шевченко © (01.09.08 14:13) [67]
    XentaAbsenta ©   (29.08.08 20:08) [59]


    > ТРИГГЕРЫ ЗЛО
    > ТРИГГЕРЫ ЗЛО
    > ТРИГГЕРЫ ЗЛО
    > ТРИГГЕРЫ ЗЛО
    > ТРИГГЕРЫ ЗЛО
    >
    > Если кому будет интересно - обосную


    Ламерам удавиться и сдохнуть
  • MsGuns © (01.09.08 14:42) [68]
    >Игорь Шевченко ©   (01.09.08 14:13) [67]
    >> ТРИГГЕРЫ ЗЛО

    В некоторых случаях 100%

    >Ламерам удавиться и сдохнуть

    Как и некоторым здешним "академикам" ;)
  • evvcom © (01.09.08 15:04) [69]

    > Cobalt   (01.09.08 14:12) [66]
    >
    > > Petr V. Abramov ©   (31.08.08 00:54) [63]
    >
    > И...? в случае ошибки программа зависнет в цикле? Так будете
    > отлавливать?

    Ты не понял. Если сервер сообщит об ошибке, то допущен цикл в связке.
    А вообще каждый инструмент хорош при его правильном использовании. Триггер нужен на своем месте, хп на своем.
  • Petr V. Abramov © (01.09.08 16:18) [70]

    > Курдль   (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 вызовет ошибку, код не помню
  • Курдль (01.09.08 16:36) [71]

    > Petr V. Abramov ©   (01.09.08 16:18) [70]
    > нет, select вызовет ошибку, код не помню


    А не вернет ли пустой набор?
    Если ты имеешь в виду ораклевый
    connect by prior start with

    ...
  • evvcom © (01.09.08 17:02) [72]

    > А не вернет ли пустой набор?
    > Если ты имеешь в виду ораклевый connect by prior start with...

    Нет, вызовет исключение.
  • Petr V. Abramov © (01.09.08 17:07) [73]

    > Курдль   (01.09.08 16:36) [71]

    нет, именно ошибку
    ORA-01436: CONNECT BY loop in user data
  • Petr V. Abramov © (01.09.08 23:52) [74]
    поп факту ж.. в данных можно найти с помощью
    CONNECT_BY_ISCYCLE pseudocolumn
    и
    CONNECT BY NOCYCLE PRIOR
    но:
    в 10.2.ххх работает стабильно, в 8.1.7.4 нету.
  • Кщд (02.09.08 07:58) [75]
    >XentaAbsenta ©   (29.08.08 20:08) [59]
    >Категорично против триггеров,
    >категорично против транзакций в триггерах!
    с удовольствием послушаю о причинах
    да, и где записывают в вашу секту?
  • Курдль (02.09.08 13:05) [76]

    > Petr V. Abramov ©   (01.09.08 16:18) [70]
    > КЛИЕНТУ - не нужен, для того хранимки и придумали


    Для чего? У меня есть фигова туча наработок под клиенты и апп.серверы  - целые классы, даже скажу пафоснее - паттерны! Они расшифровывают мои замысловатые многотабличные датасэты, чтобы сгенерировать DML. Они подстраиваются под конкретную СУБД и конкретный драйвер соединения. Они исправно работают от проекта к проекту и еще и совершенствуются в своем универсализме. А ты хочешь, чтобы я взял каменный топор и пошел писать "хранимки" под каждый датасэт?
    Вот без триггеров представить себе работу не могу... Рад бы от них отказаться - но не получается.
  • Petr V. Abramov © (02.09.08 13:44) [77]

    > даже скажу пафоснее - паттерны!
    ... чтобы сгенерировать DML

    позволю себе опошлить: == "шаблоны хранимок" в профиль
    :)))

    > А ты хочешь, чтобы я взял каменный топор и пошел писать "хранимки" под каждый датасэт?
    а если что-то в шаблон не укладывается, то на pl/sql писать проще, чем извращаться на студии или дельфях.

    Конечно, если надо делать что-то СУБД-независимое, твой подход получается верным.
    Но если не надо, то проще пользоваться мощнейшим pl/sql`ем, чем C# или VB, которые для работы с реляционными данными просто не заточены
  • Курдль (02.09.08 14:08) [78]

    > Petr V. Abramov ©   (02.09.08 13:44) [77]
    >  чем C# или VB, которые для работы с реляционными данными
    > просто не заточены


    ADO.NET для работы с реляционными данными заточены!
    На то есть датасэты с реляциями.
  • Petr V. Abramov © (02.09.08 14:39) [79]

    > На то есть датасэты с реляциями.

    а что делать-то с этими реляциями?
    foreign-ключи на клиенте проверять?

    растолкуй смысл, я его действительно не понимаю
 
Конференция "Базы" » Транзакции в триггере
Есть новые Нет новых   [134473   +28][b:0][p:0.001]