|
|
|
Проверка на UNIQUE в триггере
|
|||
|---|---|---|---|
|
#18+
почему не работает запрос вида (FB1.5, триггер BeforeInsertUpdate) : Код: plaintext 1. IB Expert говорит: Invalid token. Dynamic SQL Error. SQL error code = -104. Invalid expression in the select list (not contained in either an aggregate function or the GROUP BY clause). идея вообще-то в следуюшем, есть UNIQUE(ID_FK, NUM), пытаюсь выбрасывать exeptions при попытке внесения записи со значениями, которые уже существуют, а также при редактирование по аналогии, перед exeptionсом сервака про UNIQUE хотел сделать так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. пока писал топик, уже понял что так как задумал не получится, всё равно при редактировании поля отличного от ID_KF или NUM выдаст exceptions, подскажите плз. как реализовать проверку на updating ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2004, 12:40:52 |
|
||
|
Проверка на UNIQUE в триггере
|
|||
|---|---|---|---|
|
#18+
А нафига все это? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2004, 12:54:47 |
|
||
|
Проверка на UNIQUE в триггере
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2004, 12:57:49 |
|
||
|
Проверка на UNIQUE в триггере
|
|||
|---|---|---|---|
|
#18+
Ну и до кучиn - двоеточия неплохо бы поставить для всех переменных после INTO. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2004, 13:08:21 |
|
||
|
Проверка на UNIQUE в триггере
|
|||
|---|---|---|---|
|
#18+
Да и вообщем-то дурью ты маешься... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2004, 13:10:49 |
|
||
|
Проверка на UNIQUE в триггере
|
|||
|---|---|---|---|
|
#18+
СерегаА нафига все это? программа ориентирована на "очень" продвинутых пользователей и когда они увидят Message типа: violation of PRIMARY or UNIQUE KEY constraint "UNQ_REC_ORDERS" on table "ORDERS" каждый будет звонить и говорить "программа не работает!" после популярных объяснений в чем, на самом деле, причина появления сего сообщения, через неделю пользователь забывает что я ему пояснял, и по новой, так что я решил в своих exeptionsах сервера выводить подробнейшее описание причины отказа добавления/редактирования ORDERS Dik76Почему ошибку выдает понятно count("ID_FK") - это агрегирующая функция, если ты хочешь другие поля выводить то надо group by использовать. это я понял, подкиньте идею проверки на уникальность при редактировании !! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2004, 13:11:13 |
|
||
|
Проверка на UNIQUE в триггере
|
|||
|---|---|---|---|
|
#18+
ЛентяйНу и до кучиn - двоеточия неплохо бы поставить для всех переменных после INTO. ну писал я прямо в браузере триггер, - пропустил двоеточия, да и скобки в if ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2004, 13:12:58 |
|
||
|
Проверка на UNIQUE в триггере
|
|||
|---|---|---|---|
|
#18+
То, что ты написал - работает только при всавке. При изменении - проверку производить только при отличии old и new ID_FK или NUM. Да и проверять лучше через if(exists(select 1 from table1 where ...)) then exception ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2004, 14:06:26 |
|
||
|
Проверка на UNIQUE в триггере
|
|||
|---|---|---|---|
|
#18+
mko программа ориентирована на "очень" продвинутых пользователей и когда они увидят Message типа: violation of PRIMARY or UNIQUE KEY constraint "UNQ_REC_ORDERS" on table "ORDERS" каждый будет звонить и говорить "программа не работает!" Для этого можно поймать исключение и "перевести" текст его сообщения на доходчивое для юзера. И/Или построить работу так, что юзер не сможет ввести неправильно. А перепроверять работу констрейнта - ну уж нафиг. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2004, 14:06:55 |
|
||
|
Проверка на UNIQUE в триггере
|
|||
|---|---|---|---|
|
#18+
Серега прав, проверять работу констрейнтов ни к чему. авторviolation of PRIMARY or UNIQUE KEY constraint "UNQ_REC_ORDERS" on table "ORDERS" каждый будет звонить и говорить "программа не работает!" Если интересно как делаю я обработку ошибок: есть табличка в которой хранятся тексты ошибок (код ошибки, имя констрейнта, текст сообщения), есть дельфовый обработчик ошибок, который при возникновении ошибки ищит соответствующий код и имя констрейнта, если не находит, то ищит просто код (код с пустым именем констрейнта содержит типовое сообщение) и выводит сообщение, если ни чего не найдено выводит, то выводит текст полученный изначально. Вся обработка основанна на синтаксическом разборе сообщений. Это дело повзаимствованно из ODAC. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2004, 15:13:18 |
|
||
|
Проверка на UNIQUE в триггере
|
|||
|---|---|---|---|
|
#18+
СерегаДля этого можно поймать исключение и "перевести" текст его сообщения на доходчивое для юзера. Рациональное предложение :)) нашел я этот exeption SQLCODE codes and messages SQLCODE=-803 Number=335544665L InterBase status array error codes: Error code=isc_unique_key_violation Number=335544665L а как его "обработать" и по его возникновению, не показывая, заменить своим (на сервере)?? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2004, 15:13:29 |
|
||
|
Проверка на UNIQUE в триггере
|
|||
|---|---|---|---|
|
#18+
mkoа как его "обработать" и по его возникновению, не показывая, заменить своим (на сервере)??У тебя юзеры работают с сервером напрямую ? Или таки имеет место быть аппликация? Если таки второе, то зачем самому себе усложнять жизнь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2004, 15:16:34 |
|
||
|
Проверка на UNIQUE в триггере
|
|||
|---|---|---|---|
|
#18+
подозреваю что можна сделать так: Код: plaintext 1. 2. 3. 4. 5. только вот вопрост где?? не в BeforeInsUpd не в AfterInsUpd ясно что не сработает... МимопроходящийУ тебя юзеры работают с сервером напрямую? Или таки имеет место быть аппликация? Если таки второе, то зачем самому себе усложнять жизнь? можна конечно поймать на клиенте и выдать юзеру свое сообщение, но хочется по максимуму все возможные операции перенести на сервер, возможно это в данном случае ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2004, 15:27:09 |
|
||
|
|

start [/forum/topic.php?fid=40&msg=32650799&tid=1578066]: |
0ms |
get settings: |
6ms |
get forum list: |
19ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
205ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
56ms |
get tp. blocked users: |
2ms |
| others: | 197ms |
| total: | 502ms |

| 0 / 0 |
