powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / ADD CONSTRAINT CHECK
16 сообщений из 16, страница 1 из 1
ADD CONSTRAINT CHECK
    #38848420
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В программе выполняю запрос, который уже вставлен в FibQuery в дизайне. Т.е. во время работы программы, я его только выполняю.
Код: sql
1.
ALTER TABLE MYTABLE ADD CONSTRAINT MYTABLE_PRICE CHECK (PRICE>0 or PRICE<>'' OR PRICE IS NOT NULL)



При выполнении получаю исключение:
Project raised exception class EFIBInterBaseError with message 'qCheckConstraintsAdd:
Invalid token.
Dynamic SQL Error.
SQL error code = -104.
Unexpected end of command - line 1, column 1.
'.

Хотя IBExpert данный запрос выполняет без ошибок.
Я где-то с кавычками недонамудрил?

D2007, FibPlus
...
Рейтинг: 0 / 0
ADD CONSTRAINT CHECK
    #38848435
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11,

трейсом пробей что до сервака уходит
...
Рейтинг: 0 / 0
ADD CONSTRAINT CHECK
    #38848479
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В IBExpert включил Database Monitor. Я вижу, что этот запрос до сервера даже не добегает. Или в случае ошибки запрос не появляется в списке Statements.
...
Рейтинг: 0 / 0
ADD CONSTRAINT CHECK
    #38848484
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Включил Trace and audit в IBExpert. Подключился к серверу. Вижу все запросы, которые выполняет моё приложение.

нажимаю заветную кнопку и получаю в трассировке вот такой лог:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
015-01-05T14:32:45.4380 (2072:0190DEB0) START_TRANSACTION
    Имя_базы.FDB (ATT_6274, SYSDBA:NONE, WIN1251, TCPv4:127.0.0.1)
    имя_приложения.exe:6716
        (TRA_256790, READ_COMMITTED | REC_VERSION | NOWAIT | READ_WRITE)

2015-01-05T14:32:45.4380 (2072:0190DEB0) FAILED PREPARE_STATEMENT
    Имя_базы.FDB (ATT_6274, SYSDBA:NONE, WIN1251, TCPv4:127.0.0.1)
    имя_приложения.exe:6716

Statement 0, <unknown, bug?>:
      0 ms
...
Рейтинг: 0 / 0
ADD CONSTRAINT CHECK
    #38848487
Фотография arni
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У фибовской транзакции есть метод ExecSQLImmediate(). Декларируется как раз для исполнения DDL-запросов.
Попробуйте. Не помню, только, надо ли затем коммитить транзакцию, или оно в автокоммите проталкивается.

p.s. Предикат у вас странный. Может так логичнее:
Код: sql
1.
(PRICE>0)
...
Рейтинг: 0 / 0
ADD CONSTRAINT CHECK
    #38848496
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11Statement 0, <unknown, bug?>:
Телепаю: ты в компонент внёс запрос прямо в апострофах.

PS: Проверять одно и то же поле на ноль и пустую строку - большая ошибка.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
ADD CONSTRAINT CHECK
    #38848528
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет, вот запрос, как он виден в свойстве SQL:



@@TAB@ - это работа с макросами

выполняю так:

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
  qCheckConstraintsAdd.ParamByName('TAB').AsString  := GetTableByItem(cbDescription.ItemIndex);

//генерируем имя ограничения
  qCheckConstraintsAdd.ParamByName('CHK').AsString  := GetTableByItem(cbDescription.ItemIndex) + '_' + FIELD_NAME;
  qCheckConstraintsAdd.ParamByName('F').AsString    := FIELD_NAME;

//здесь показан готовый запрос, именно этот запрос я вставляю в IBExpert и он выполняется без ошибок
  ShowMessage(qCheckConstraintsAdd.ReadySQLText);

  qCheckConstraintsAdd.ExecQuery;
...
Рейтинг: 0 / 0
ADD CONSTRAINT CHECK
    #38848529
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
arniУ фибовской транзакции есть метод ExecSQLImmediate().

ExecuteImmediate?
...
Рейтинг: 0 / 0
ADD CONSTRAINT CHECK
    #38848530
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет, всё равно та же ошибка.
...
Рейтинг: 0 / 0
ADD CONSTRAINT CHECK
    #38848531
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сделал следующее.
Сгенерированный готовый запрос взял и заменил тем, что виден на картинке выше и ошибка исчезла.
Получается, что это где в недрах фибов баг? Т.е. в ReadySQLText я вижу одно, а на сервер уходит нечто другое?
...
Рейтинг: 0 / 0
ADD CONSTRAINT CHECK
    #38848916
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот такой костыль сделал

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Var:
sql: string;
begin
...
...
...
  sql := qCheckConstraintsAdd.ReadySQLText;
  qCheckConstraintsAdd.SQL.Text := sql;
  qCheckConstraintsAdd.Prepare;
  qCheckConstraintsAdd.ExecQuery;
...
Рейтинг: 0 / 0
ADD CONSTRAINT CHECK
    #38849550
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11,

классика :)
...
Рейтинг: 0 / 0
ADD CONSTRAINT CHECK
    #38849647
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
для текстовых полей это условие не пройдёт: PRICE>0
а ничего универсального нет?
придётся определять ещё тип поля или домена и потом только строить условие?
...
Рейтинг: 0 / 0
ADD CONSTRAINT CHECK
    #38850364
Dmitry Kurbsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11PRICE>0 or PRICE<>'' OR PRICE IS NOT NULL
В чём вообще смысл такой загадочной проверки?
...
Рейтинг: 0 / 0
ADD CONSTRAINT CHECK
    #38850369
NikolayV81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dmitry KurbskyX11PRICE>0 or PRICE<>'' OR PRICE IS NOT NULL
В чём вообще смысл такой загадочной проверки?

Можно предположить что это для того что бы в формах не проверять введены ли данные реально или там пустые строки и 0-и по умолчанию
...
Рейтинг: 0 / 0
ADD CONSTRAINT CHECK
    #38850370
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dmitry KurbskyX11PRICE>0 or PRICE<>'' OR PRICE IS NOT NULL
В чём вообще смысл такой загадочной проверки?

http://www.sql.ru/forum/1135875/polya-obyazatelnye-dlya-zapolneniya
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / ADD CONSTRAINT CHECK
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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