Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2013.03.22;
Скачать: CL | DM;

Вниз

Триггер в 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;
Скачать: CL | DM;

Наверх




Память: 0.56 MB
Время: 0.229 c
2-1334905984
Sa1exn
2012-04-20 11:13
2013.03.22
Изменение шрифта для форм


2-1341682015
Jonis_84
2012-07-07 21:26
2013.03.22
проверка соединения


15-1332015528
>|<
2012-03-18 00:18
2013.03.22
Взаимодействие приложений


15-1330423503
Loginov Dmitry
2012-02-28 14:05
2013.03.22
Парадоксы с фокусом (D2007)


15-1333119005
Baks
2012-03-30 18:50
2013.03.22
#10008 - replace hard disk1