Форум: "Прочее";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];
ВнизТриггер в FireBird Найти похожие ветки
← →
Knight © (2012-05-02 15:20) [40]
> Хотя, странно это - зачем триггер создавать из своей программы?
Прога с базой embedded, если базы нет генерю чистую при первом запуске.
← →
Knight © (2012-05-02 15:24) [41]
> надо поставить Query.ParamCheck = False
И ещё Query.Params.Clear; Спасибо! Ошибка пропала :)
← →
Труп Васи Доброго © (2012-05-02 15:29) [42]Совсем запутал! Это тебе кто сообщение об ошибке выдаёт? И Когда выдаёт?
з.Ы. Вынеси UPDATE "за скобки"
Query.SQL.Text:="CREATE TRIGGER AU_NOTE FOR tNote "
+" ACTIVE AFTER INSERT OR UPDATE OR DELETE "
+"AS "
+"DECLARE variable vID INTEGER; "
+"DECLARE variable vStatus INTEGER; "
+"BEGIN "
+" IF (DELETING) THEN "
+" vID=Old.fParentID; "
+" ELSE "
+" vID=New.fParentID; "
+" IF (vID>0) THEN "
+" BEGIN "
+" IF (NOT (EXISTS(SELECT 1 FROM tNote WHERE fParentID=:vID AND fStatus<>1))) THEN "
+" vStatus=1; "
+" ELSE "
+" IF (NOT (EXISTS(SELECT 1 FROM tNote WHEREfParentID=:vID AND fStatus<>4))) THEN "
+" vStatus=4; "
+" ELSE "
+" IF (EXISTS(SELECT 1 FROM tNote WHERE fParentID=:vID AND (fStatus=3 OR fStatus=4))) THEN "
+" vStatus=3; "
+" ELSE "
+" vStatus=2; "
+" END "
+" UPDATE tNote SET fStatus=:vStatus WHERE fID=:vID; "
+"END";
← →
Труп Васи Доброго © (2012-05-02 15:32) [43]Мой вариант будет работать всегда, твой только в том случае, если никто никогда и никак не захочет изменить непосредственно статус "родителя". Что лучше - решать тебе.
← →
Knight © (2012-05-02 15:44) [44]
> изменить непосредственно статус "родителя"
Изменение статуса родителя из программы недоступно.
← →
Knight © (2012-05-02 15:45) [45]
> Труп Васи Доброго
Я твой вариант сохранил на всякий :)
← →
Труп Васи Доброго © (2012-05-02 15:56) [46]
> Изменение статуса родителя из программы недоступно.
Я тоже раньше был такой наивный. Запомни, всегда найдётся какая-нибудь .адла "умная", которая залезет в базу в обход программы и поковыряется.
Да и если вдруг база будет использоваться другими программами (написанными не тобой), то там такой защиты может не быть.
ИМХО всё что можно перенести в базу должно быть перенесено. Программа должна только запрашивать готовый результат или передавать базе данные для внесения/изменения, но сама ничего делать в базе не должна, это работа СУБД.
← →
Knight © (2012-05-02 16:05) [47]
> Труп Васи Доброго © (02.05.12 15:56) [46]
Это диплом. Практической ценности (кроме меня - т.к. пишу для себя) не несёт. Весь смысл, защитить его как-нибудь и пользоваться самому, т.к. органайзер вроде надо, но из готового ничего не подобрал либо не то, либо слишком наворочено :)
← →
oldman © (2012-05-03 12:23) [48]
> Это диплом. Практической ценности (кроме меня - т.к. пишу
> для себя) не несёт.
Пишешь диплом для себя?
Ого!!!
← →
Anatoly Podgoretsky © (2012-05-03 12:28) [49]> oldman (03.05.2012 12:23:48) [48]
А новых студентов принимают?
← →
Knight © (2012-05-03 20:40) [50]
> Пишешь диплом для себя?
Я 1с занимаюсь, тем подходящих небыло. Выбрал что самому пригодится.
Страницы: 1 2 вся ветка
Форум: "Прочее";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];
Память: 0.54 MB
Время: 0.07 c