powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / current user | last user Firebird<>ASA (Было: один триггер на несколько таблиц)
25 сообщений из 45, страница 1 из 2
current user | last user Firebird<>ASA (Было: один триггер на несколько таблиц)
    #32904071
Фотография асёлъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
субшъ.
_
спасиба

++++++++++++++
замечание тебе, асёлъ.
...
Рейтинг: 0 / 0
current user | last user Firebird<>ASA (Было: один триггер на несколько таблиц)
    #32904123
Лентяй
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет
...
Рейтинг: 0 / 0
current user | last user Firebird<>ASA (Было: один триггер на несколько таблиц)
    #32904127
Фотография асёлъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
точна?
пичальна
но фсьо равно спасиба
...
Рейтинг: 0 / 0
current user | last user Firebird<>ASA (Было: один триггер на несколько таблиц)
    #32904153
Фотография ASCRUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
асёлъточна?
пичальна
но фсьо равно спасиба
Если немножно вдумчиво подумать, то можно придти к ответу, что "можно". Для этого пишется ХП с нужной логикой, которая вызывается с триггеров нужных таблиц. Таким образом получаем повторно-используемое решение.
...
Рейтинг: 0 / 0
current user | last user Firebird<>ASA (Было: один триггер на несколько таблиц)
    #32904156
Фотография асёлъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ASCRUS асёлъточна?
пичальна
но фсьо равно спасиба
Если немножно вдумчиво подумать, то можно придти к ответу, что "можно". Для этого пишется ХП с нужной логикой, которая вызывается с триггеров нужных таблиц. Таким образом получаем повторно-используемое решение.да йа такъ и делойу
проста интиресна была
а фдрукъ можна
...
Рейтинг: 0 / 0
current user | last user Firebird<>ASA (Было: один триггер на несколько таблиц)
    #32904166
Фотография ASCRUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сделать можно все что угодно. Главное перед этим обосновать вопрос "А зачем ?" :)
...
Рейтинг: 0 / 0
current user | last user Firebird<>ASA (Было: один триггер на несколько таблиц)
    #32904599
Фотография Castor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ASCRUSСделать можно все что угодно. Главное перед этим обосновать вопрос "А зачем ?" :)
Мне такое было нужно чтобы во всех таблицах проставлялась дата последнего изменения записи. Причем при обновлении записи в любой таблице - дата должна меняться у всех. В рез-те сделал обновление даты при сохранении через клиентскую программу, хотя конечно правильнее сделать через ХП
...
Рейтинг: 0 / 0
current user | last user Firebird<>ASA (Было: один триггер на несколько таблиц)
    #32904631
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CastorМне такое было нужно чтобы во всех таблицах проставлялась дата последнего изменения записи. Причем при обновлении записи в любой таблице - дата должна меняться у всех. В рез-те сделал обновление даты при сохранении через клиентскую программу, хотя конечно правильнее сделать через ХПА потом клиент переводит часы и...
...
Рейтинг: 0 / 0
current user | last user Firebird<>ASA (Было: один триггер на несколько таблиц)
    #32904653
Фотография ASCRUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Castor ASCRUSСделать можно все что угодно. Главное перед этим обосновать вопрос "А зачем ?" :)
Мне такое было нужно чтобы во всех таблицах проставлялась дата последнего изменения записи. Причем при обновлении записи в любой таблице - дата должна меняться у всех. В рез-те сделал обновление даты при сохранении через клиентскую программу, хотя конечно правильнее сделать через ХП
Ну так нужно разработчиков FB попросить сделать такую полезную фичу, как в ASA:
Код: plaintext
1.
2.
3.
4.
5.
6.
CREATE TABLE Table1 (
  id int NOT NULL PRIMARY KEY,
  Create_User char( 128 ) NOT NULL DEFAULT CURRENT USER,
  Update_User char( 128 ) NOT NULL DEFAULT LAST USER,
  Create_Time datetime NOT NULL DEFAULT CURRENT TIMESTAMP,
  Update_Time datetime NOT NULL DEFAULT TIMESTAMP
);
В итоге при добавлении записи в Create_User и Last_User будет ведено имя пользователя, добавившего запись, а в Create_Time и Update_Time время создания записи. А вот при обновлении ASA автоматически обновит поля Update_User и Update_Time, в итоге в них будет уже имя последнего пользователя изменившего запись и время модификации этой записи. Очень удобно, а главное все делается автоматом и кодировать ничего не нужно :)
...
Рейтинг: 0 / 0
current user | last user Firebird<>ASA (Было: один триггер на несколько таблиц)
    #32904798
protector
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ASCRUS
Ну так нужно разработчиков FB попросить сделать такую полезную фичу, как в ASA:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
CREATE TABLE Table1 (
  id int NOT NULL PRIMARY KEY,
  Create_User char( 128 ) NOT NULL DEFAULT CURRENT USER,
  Update_User char( 128 ) NOT NULL DEFAULT LAST USER,
  Create_Time datetime NOT NULL DEFAULT CURRENT TIMESTAMP,
  Update_Time datetime NOT NULL DEFAULT TIMESTAMP
);
итоге при добавлении записи в Create_User и Last_User будет ведено имя пользователя, добавившего запись, а в Create_Time и Update_Time время создания записи. А вот при обновлении ASA автоматически обновит поля Update_User и Update_Time, в итоге в них будет уже имя последнего пользователя изменившего запись и время модификации этой записи. Очень удобно, а главное все делается автоматом и кодировать ничего не нужно :)

Ну так есть уже. Давно как есть...


Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
current user | last user Firebird<>ASA (Было: один триггер на несколько таблиц)
    #32904814
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
разработчиков FB ни о чем не нужно просить. current_user и current_timestamp есть.
В приведенном коде last_user не имеет смысла (это тот же current_user), а timestamp это вообще то тип столбца и писать надо опять же current_timestamp.

Если ты уверен, что в ASA так как ты написал, то кривовато это. из кода нигде не видно почему при insert должны автоматом заполниться только два поля, а при update - другие два.

Кстати, not null default x вообще то тоже под сомнением. потому что not null не разрешает передавать null. А default заменяет отсутствующее значение на указанное. вопрос в том - означает-ли отсутствие переданного значения null, или нет?

собственно, если бы я это делал, то сделал бы триггер на before insert для create столбцов (и не писал not null и default), а для двух столбцов update сделал бы before update триггер, в котором также прописал current_timestamp и current_user.
тогда достаточно было бы вызвать insert into table1 (n) и update table set id=id where id = :param
...
Рейтинг: 0 / 0
current user | last user Firebird<>ASA (Было: один триггер на несколько таблиц)
    #32904815
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
проглядел, что стандартное название типа данных TIMESTAMP у вас не туда используется (а тип данных - datetime). Сочувствую.
...
Рейтинг: 0 / 0
current user | last user Firebird<>ASA (Было: один триггер на несколько таблиц)
    #32904869
protector
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdv
проглядел, что стандартное название типа данных TIMESTAMP у вас не туда используется (а тип данных - datetime). Сочувствую.

Да ну, брось. Это мелочи. И не такое бывает. Если не в названии, то в реализации.


Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
current user | last user Firebird<>ASA (Было: один триггер на несколько таблиц)
    #32904896
Фотография Александр Гoлдун
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvразработчиков FB ни о чем не нужно просить. current_user и current_timestamp есть.
В приведенном коде last_user не имеет смысла (это тот же current_user), а timestamp это вообще то тип столбца и писать надо опять же current_timestamp.

Если ты уверен, что в ASA так как ты написал, то кривовато это. из кода нигде не видно почему при insert должны автоматом заполниться только два поля, а при update - другие два.


Это видно из документации. CURRENT USER в ASA соответствет current_user в FB. Аналогично и CURRENT TIMESTAMP. А вот LAST USER и TIMESTAMP - это специальные default-значения, при назначении которых полям сервер автоматом выставляем их значения при апдейте.

kdv
Кстати, not null default x вообще то тоже под сомнением. потому что not null не разрешает передавать null. А default заменяет отсутствующее значение на указанное. вопрос в том - означает-ли отсутствие переданного значения null, или нет?


Если при insert явно указать null, то default не используется.

kdv
проглядел, что стандартное название типа данных TIMESTAMP у вас не туда используется (а тип данных - datetime). Сочувствую.


Чему сочувствуешь? timestamp и datetime в ASA один и тот же тип. Вполне можно и так написать:

Код: plaintext
1.
2.
3.
4.
CREATE TABLE Table1 (
  id int NOT NULL PRIMARY KEY,
  Update_Time TIMESTAMP NOT NULL DEFAULT TIMESTAMP
);
...
Рейтинг: 0 / 0
current user | last user Firebird<>ASA (Было: один триггер на несколько таблиц)
    #32905034
Фотография ASCRUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvразработчиков FB ни о чем не нужно просить. current_user и current_timestamp есть.
В приведенном коде last_user не имеет смысла (это тот же current_user), а timestamp это вообще то тип столбца и писать надо опять же current_timestamp.
В приведенном примере в DEFAULT ключевые слова "LAST USER" и "TIMESTAMP" имеют очень большой смысл - они гарантируют, что значения полей, на которые они выставлены будут автоматически изменятся при каждом update записи. Это гораздо приятнее, чем писать триггера на таблицы или вставлять эти значения в ХП. Я вроде как обьяснил это в предыдущем сообщении, видимо не поняли.

kdvЕсли ты уверен, что в ASA так как ты написал, то кривовато это. из кода нигде не видно почему при insert должны автоматом заполниться только два поля, а при update - другие два.
Я на 100% уверен про то, как надо писать в ASA на WatcomSQL :) И очень подробно обьяснил, почему при insert заполнятся все 4 поля, а при update только 2 поля из 4-х :)

авторКстати, not null default x вообще то тоже под сомнением. потому что not null не разрешает передавать null. А default заменяет отсутствующее значение на указанное. вопрос в том - означает-ли отсутствие переданного значения null, или нет?
Наоборот, очень даже логично - ставя NOT NULL я заявляю, что каждая запись должна иметь создателя и время создания, а так же последнего юзера изменившего запись и последнее время изменения. По стандарту SQL если в INSERT поля не указываются, то они заполняются с DEFAULT. В ASA ввели расширение этого стандарта, где DEFAULT LAST USER и DEFAULT TIMESTAMP автоматически обновляются значениями так же при UPDATE, если они явно не указаны в нем.

авторсобственно, если бы я это делал, то сделал бы триггер на before insert для create столбцов (и не писал not null и default), а для двух столбцов update сделал бы before update триггер, в котором также прописал current_timestamp и current_user.
Ну так никто и не спорит, что это можно сделать через BEFORE TRIGGER. Однако не делать лишний раз этот триггер на сотни таблиц гораздо удобнее и что то мне подсказывает эффективнее с точки зрения производительности INSERT и UPDATE :)

автортогда достаточно было бы вызвать insert into table1 (n) и update table set id=id where id = :param
именно так и достаточно :)

авторпроглядел, что стандартное название типа данных TIMESTAMP у вас не туда используется (а тип данных - datetime). Сочувствую.
Спасибо за сочувствие :) В ASA - DATETIME стандартный домен на базе нативного типа TIMESTAMP. Сделан для совместимости с MSSQL2000 и Sybase ASE, в которых до сих пор даже нет отдельных типов DATE и TIME. В примере я его привел только чтобы облегчить понимание фичи и не вносить путаницу, т.е. можно было бы написать и так:
Код: plaintext
Update_Time TIMESTAMP DEFAULT TIMESTAMP
но как оказалось меня все таки не правильно поняли :)

P.S. В общем честно сказать я просто хотел очередной раз хотел показать, что негоже сидеть в своей траншее и размахивать флагом "Interbase". Фичи, приведенные мною достаточно удобные и здорово мне помогают для реализации контроля доступа и логирования по записям таблиц, если они есть в FB, то извиняюсь за незнание и бесполезный совет, если нет, то нужно оценить их пользу и возможно реализовать, а не начинать тут же кидать фразами "Мы и так можем сделать", "Нам это не нужно" и т.д. и т.п. Я могу твердо заявить, что с точки зрения самых полезных фич различных СУБД в SQL для ASA реализовано почти все, ее разработчики не гнушаются брать лучшее и всегда прислушиваются к мнению своих пользователей. Наглядный пример - сейчас активно на их форуме "ASA futures" идет обсуждение реализации фичи "TOP -Value", где проектировщик БД, который работает и на Оракле предложил заложить в функциональность SELECT TOP поддержку отрицательных значений, что означает выбрать не первые сколько то записей, а последние сколько то записей. Мотивируется это тем, что при сборе динамического SQL это гораздо удобнее, чем дополнительно играться с ORDER BY ASC/DESC. Вполне возможно эта фича при благоприятном исходе обсуждения будет реализована в ASA через пару месяцев, если на это подпишется достаточно народу.
...
Рейтинг: 0 / 0
current user | last user Firebird<>ASA (Было: один триггер на несколько таблиц)
    #32905355
Фотография Александр Гoлдун
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ASCRUS
Я могу твердо заявить, что с точки зрения самых полезных фич различных СУБД в SQL для ASA реализовано почти все, ее разработчики не гнушаются брать лучшее и всегда прислушиваются к мнению своих пользователей. Наглядный пример - сейчас активно на их форуме "ASA futures" идет обсуждение реализации фичи "TOP -Value", где проектировщик БД, который работает и на Оракле предложил заложить в функциональность SELECT TOP поддержку отрицательных значений, что означает выбрать не первые сколько то записей, а последние сколько то записей. Мотивируется это тем, что при сборе динамического SQL это гораздо удобнее, чем дополнительно играться с ORDER BY ASC/DESC. Вполне возможно эта фича при благоприятном исходе обсуждения будет реализована в ASA через пару месяцев, если на это подпишется достаточно народу.

У FB тоже есть разработчики :) и даже из России. Активно участвуют в обсуждении фич в форуме и открыты для предложений. Но ресурсов у opensource проекта FB IMHO меньше чем у коммерческого ASA, а наследие более тяжелое и кривое. Полезные мелочи - это хорошо. Но это мелочи, которыми стоит заняться после решения более важных проблем сервера. По мне так гораздо интереснее иметь нормальный оптимизатор, инкрементальный бэкап (будет в FB2), transaction log (сейчас скажут что нафиг не нужно либо очень сложно) и еще возможность распараллеливания между несколькими процессорами при общем кэше. Триггеры в таком случае не влом действительно вручную прописать.
...
Рейтинг: 0 / 0
current user | last user Firebird<>ASA (Было: один триггер на несколько таблиц)
    #32905429
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to ASCRUS: не перегибай палку, ОК? мне уже эта реклама ASA просто надоела, ты по-моему уже давно перешел все границы разумного. Чуть что - сразу начинается песня про то как в ASA замечательно, и вот неплохо было бы FB у него позанять фишек. Нет, извини, дерьмовый ты синтаксис привел, вот такие мои ощущения (и от синтаксиса и от подобной логики).

Так что будь добр, хочешь пообсуждать ASA - давай сделаем это в другом месте. Если и дальше будешь именно здесь на ASA кивать без повода - честное слово, не люблю жаловаться, но уговорю модератора отрубить тебя от этого форума.
...
Рейтинг: 0 / 0
current user | last user Firebird<>ASA (Было: один триггер на несколько таблиц)
    #32905737
Amris Mirddin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ASCRUS
Я на 100% уверен про то, как надо писать в ASA на WatcomSQL :) И очень подробно обьяснил, почему при insert заполнятся все 4 поля, а при update только 2 поля из 4-х :)


И нафига тогда все эти мудрствовования с last user? Это эквивалентно заданию апдейтной пары с теми же default, что и инсёртной. Это искажение сути мне, например, нафиг не надо, апдейтные поля должны заполняться только при апдейте, а при нтсёрте оставаться нуллами. Триггером. А инсертные - через default. Вот если бы такой синтаксис позволял генерировать на автомате апдейтный триггер - это другое дело. Но это а) мелочь, решаемая собственным автоматом генерирования стандартных триггеров б) поднимает проблемы с позицией такого триггера (надо ещё подумать, в какой момент эти поля должны заполняться и при создании других триггеров того же типа на этой таблице об этом помнить). Так что имхо автомат на клиенте удобнее. Я создаю им болванки триггеров, которые потом дописываю ручками перед созданием если надо. Чтоб без необходимости разнесения функций по позициям триггеров всё было в одном триггере и в той строке, где мне это нужно.

ASCRUS
P.S. В общем честно сказать я просто хотел очередной раз хотел показать, что негоже сидеть в своей траншее и размахивать флагом "Interbase".

В прошлый раз я отреагировал спокойно, даже на то, что ты не отреагировал на реплики о том, что некоторые вещи, о которых ты говоришь, в FB есть и без всяких дополнительных нестандартных функций. В этот раз уже даже мне это начинает казаться спамом. Прежде чем что-то рекламировать в чужом огороде, надо бы об этом огороде поиметь некоторое представление.
...
Рейтинг: 0 / 0
current user | last user Firebird<>ASA (Было: один триггер на несколько таблиц)
    #32905743
Amris Mirddin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Александр Гoлдун.

Честно говоря, я думал что ASCRUS - это твой ник здесь. Приятно было ошибиться :)
...
Рейтинг: 0 / 0
current user | last user Firebird<>ASA (Было: один триггер на несколько таблиц)
    #32905886
Фотография ASCRUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гм, большое сорри всем за спам. Никого не хотел обидеть и уж боже упаси навязать рекламу ASA, тем более за бесплатно, извините что не так поняли. Всегда рад буду встрече на форумах Sybase и Сравнение СУБД обсудить полезные фичи разных СУБД, если у кого будет желание рассказать, что есть полезного в Interbase и чего не хватает в ASA, так как думается мне расширение кругозора никогда не повредит :)

P.S. Становлюсь верным читателем этого форума, не мешая писателям, всем удачи.
Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
current user | last user Firebird<>ASA (Было: один триггер на несколько таблиц)
    #32905902
SSY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IMHO, писать в таблицу логин пользователя довольно опасно, особенно в FB (в других серверах, где security встроено в саму базу, - тоже, но меньше). Неизвестно, что там дальше будет с этими логинами. Лучше отдельную табличку пользователей завести и её IDшники уже использовать (и место можно немного сэкономить). А это значит, что примочки как в ASA тут не пригодятся.

Как сделать один триггер на несколько таблиц я вообще слабо себе представляю. Там же в каждом случае - свой контекст, а ещё легко нарваться на рекурсию и, наверное, других подводных камней полно. Так что такое упрощение может на самом деле всё наоборот усложнить. Лучше ну его нафих.
...
Рейтинг: 0 / 0
current user | last user Firebird<>ASA (Было: один триггер на несколько таблиц)
    #32905963
Фотография Александр Гoлдун
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Amris Mirddin Александр Гoлдун.

Честно говоря, я думал что ASCRUS - это твой ник здесь. Приятно было ошибиться :)
Мы с вами знакомы? А, привет, Дед! ;)
Я уже давно с вами общаюсь и в курсе, насколько ревностно ДК относится к опекаемому продукту, поэтому стараюсь особо не вступать в полемику. (Бейсбольная бита с надписью FB - опасная штука :) Хотя скорее всего знаком с FB гораздо лучше чем ASCRUS и имею бОльшую базу для объективного сравнения. Но абстрактно доказывать что-то не хочу. Спросят - отвечу, увижу глубокое по моему мнению заблуждение - может поправлю. Время дорого.
ASCRUS и правда немного перегнул, а вот Диме imho стОит взять пример хладнокровия с тезки.
В общем, давайте жить дружно и без фанатизма.
...
Рейтинг: 0 / 0
current user | last user Firebird<>ASA (Было: один триггер на несколько таблиц)
    #32906103
Фотография Александр Гoлдун
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ASCRUSВсегда рад буду встрече на форумах Sybase

Один из разработчиков FB там регулярно бывает.
ASCRUS
P.S. Становлюсь верным читателем этого форума, не мешая писателям, всем удачи.

Этот форум - imho не самое лучшее место про FB. Глянь хотя бы в тему этой ветки.
...
Рейтинг: 0 / 0
current user | last user Firebird<>ASA (Было: один триггер на несколько таблиц)
    #32906175
Amris Mirddin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Александр Гoлдун
Этот форум - imho не самое лучшее место про FB. Глянь хотя бы в тему этой ветки.

Тут очень неровно. Иногда бывают даже вопросы, в которые не суёшься потому что не владеешь и читаешь с интересом, а потом как заколодит на несколько дней юмора в коротких штанишках по причине тотального игнорирования доки ;) Причём на одну и ту же тему и одни и те же вопросы косяком. Но это везде бывает, в другом месте просто поменьше. А тема - да... Я на неё несколько дней внимания не обращал из принципиальных соображений, а потом смотрю - что-то уж больно активно выскакивает наверх :)
...
Рейтинг: 0 / 0
current user | last user Firebird<>ASA (Было: один триггер на несколько таблиц)
    #32906210
SSY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Предлагаю "переименовать" ASA в A$A. Так все постоянно будут помнить о том, чем он хуже FB.
...
Рейтинг: 0 / 0
25 сообщений из 45, страница 1 из 2
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / current user | last user Firebird<>ASA (Было: один триггер на несколько таблиц)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]