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

++++++++++++++
замечание тебе, асёлъ.
...
Рейтинг: 0 / 0
07.02.2005, 14:32
    #32904123
Лентяй
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
current user | last user Firebird<>ASA (Было: один триггер на несколько таблиц)
Нет
...
Рейтинг: 0 / 0
07.02.2005, 14:34
    #32904127
асёлъ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
current user | last user Firebird<>ASA (Было: один триггер на несколько таблиц)
точна?
пичальна
но фсьо равно спасиба
...
Рейтинг: 0 / 0
07.02.2005, 14:42
    #32904153
ASCRUS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
current user | last user Firebird<>ASA (Было: один триггер на несколько таблиц)
асёлъточна?
пичальна
но фсьо равно спасиба
Если немножно вдумчиво подумать, то можно придти к ответу, что "можно". Для этого пишется ХП с нужной логикой, которая вызывается с триггеров нужных таблиц. Таким образом получаем повторно-используемое решение.
...
Рейтинг: 0 / 0
07.02.2005, 14:43
    #32904156
асёлъ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
current user | last user Firebird<>ASA (Было: один триггер на несколько таблиц)
ASCRUS асёлъточна?
пичальна
но фсьо равно спасиба
Если немножно вдумчиво подумать, то можно придти к ответу, что "можно". Для этого пишется ХП с нужной логикой, которая вызывается с триггеров нужных таблиц. Таким образом получаем повторно-используемое решение.да йа такъ и делойу
проста интиресна была
а фдрукъ можна
...
Рейтинг: 0 / 0
07.02.2005, 14:48
    #32904166
ASCRUS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
current user | last user Firebird<>ASA (Было: один триггер на несколько таблиц)
Сделать можно все что угодно. Главное перед этим обосновать вопрос "А зачем ?" :)
...
Рейтинг: 0 / 0
07.02.2005, 17:28
    #32904599
Castor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
current user | last user Firebird<>ASA (Было: один триггер на несколько таблиц)
ASCRUSСделать можно все что угодно. Главное перед этим обосновать вопрос "А зачем ?" :)
Мне такое было нужно чтобы во всех таблицах проставлялась дата последнего изменения записи. Причем при обновлении записи в любой таблице - дата должна меняться у всех. В рез-те сделал обновление даты при сохранении через клиентскую программу, хотя конечно правильнее сделать через ХП
...
Рейтинг: 0 / 0
07.02.2005, 17:44
    #32904631
hvlad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
current user | last user Firebird<>ASA (Было: один триггер на несколько таблиц)
CastorМне такое было нужно чтобы во всех таблицах проставлялась дата последнего изменения записи. Причем при обновлении записи в любой таблице - дата должна меняться у всех. В рез-те сделал обновление даты при сохранении через клиентскую программу, хотя конечно правильнее сделать через ХПА потом клиент переводит часы и...
...
Рейтинг: 0 / 0
07.02.2005, 17:54
    #32904653
ASCRUS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
current user | last user Firebird<>ASA (Было: один триггер на несколько таблиц)
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
07.02.2005, 19:14
    #32904798
protector
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
current user | last user Firebird<>ASA (Было: один триггер на несколько таблиц)
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
07.02.2005, 19:23
    #32904814
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
current user | last user Firebird<>ASA (Было: один триггер на несколько таблиц)
разработчиков 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
07.02.2005, 19:24
    #32904815
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
current user | last user Firebird<>ASA (Было: один триггер на несколько таблиц)
проглядел, что стандартное название типа данных TIMESTAMP у вас не туда используется (а тип данных - datetime). Сочувствую.
...
Рейтинг: 0 / 0
07.02.2005, 20:09
    #32904869
protector
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
current user | last user Firebird<>ASA (Было: один триггер на несколько таблиц)
kdv
проглядел, что стандартное название типа данных TIMESTAMP у вас не туда используется (а тип данных - datetime). Сочувствую.

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


Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
07.02.2005, 20:29
    #32904896
Александр Гoлдун
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
current user | last user Firebird<>ASA (Было: один триггер на несколько таблиц)
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
08.02.2005, 00:24
    #32905034
ASCRUS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
current user | last user Firebird<>ASA (Было: один триггер на несколько таблиц)
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
08.02.2005, 10:20
    #32905355
Александр Гoлдун
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
current user | last user Firebird<>ASA (Было: один триггер на несколько таблиц)
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
08.02.2005, 10:42
    #32905429
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
current user | last user Firebird<>ASA (Было: один триггер на несколько таблиц)
to ASCRUS: не перегибай палку, ОК? мне уже эта реклама ASA просто надоела, ты по-моему уже давно перешел все границы разумного. Чуть что - сразу начинается песня про то как в ASA замечательно, и вот неплохо было бы FB у него позанять фишек. Нет, извини, дерьмовый ты синтаксис привел, вот такие мои ощущения (и от синтаксиса и от подобной логики).

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


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

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

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

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

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

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

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

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

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

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


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