Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.05.2009, 17:09   #1
Claster
Форумчанин
 
Аватар для Claster
 
Регистрация: 02.09.2008
Сообщений: 340
По умолчанию Триггеры в Inter Base 7.0

Проблема с созданием триггера в IB 7.0 в чём причина не могу понять

Код:
CREATE TRIGGER "TR_GEN_TOVAR_ID" FOR "TOVAR"
ACTIVE BEFORE INSERT POSITION 0
AS
begin
  IF (NEW.ID IS NULL) THEN
    NEW.ID=GEN_ID(GEN_TOVAR_ID,1);
end
Ошибка прикреплена:
Изображения
Тип файла: jpg 123.JPG (21.9 Кб, 129 просмотров)
Цитата:
- Только сисадмин может попросить у начальства 20$ на память...
Claster вне форума Ответить с цитированием
Старый 13.05.2009, 17:16   #2
Dark_Spirit
Форумчанин
 
Аватар для Dark_Spirit
 
Регистрация: 05.02.2009
Сообщений: 324
По умолчанию

а у вас есть поле new.id?
Тяжело быть бестолковым.....
Dark_Spirit вне форума Ответить с цитированием
Старый 13.05.2009, 17:30   #3
Claster
Форумчанин
 
Аватар для Claster
 
Регистрация: 02.09.2008
Сообщений: 340
По умолчанию

На примере данной таблицы всё нормально создаётся
Код:
CREATE TABLE "SOTR" 
(
  "ID"	INTEGER NOT NULL,
  "FIRSTNAME"	VARCHAR(32) CHARACTER SET WIN1251,
  "MIDDLENAME"	VARCHAR(32) CHARACTER SET WIN1251,
  "LASTNAME"	VARCHAR(32) CHARACTER SET WIN1251,
 PRIMARY KEY ("ID")
);

Вот триггер для неё

Код:
CREATE TRIGGER "TR_GEN_SOTR_ID" FOR "SOTR" 
ACTIVE BEFORE INSERT POSITION 0
AS
begin
  IF (NEW.ID IS NULL) THEN
    NEW.ID=GEN_ID(GEN_SOTR_ID,1);
end
Цитата:
- Только сисадмин может попросить у начальства 20$ на память...
Claster вне форума Ответить с цитированием
Старый 13.05.2009, 17:38   #4
Dark_Spirit
Форумчанин
 
Аватар для Dark_Spirit
 
Регистрация: 05.02.2009
Сообщений: 324
По умолчанию

а структуру таблицы TOVAR, можно посмотреть?
Тяжело быть бестолковым.....
Dark_Spirit вне форума Ответить с цитированием
Старый 13.05.2009, 17:56   #5
Claster
Форумчанин
 
Аватар для Claster
 
Регистрация: 02.09.2008
Сообщений: 340
По умолчанию

Код:
CREATE TABLE "TOVAR" 
(
  "id_tovara"	INTEGER NOT NULL,
  "Nazvanie"	"T_CHAR",
  "Vid"	"T_CHAR",
  "Cena"	"T_INT",
  "Opis"	BLOB SUB_TYPE TEXT SEGMENT SIZE 8 CHARACTER SET WIN1251,
  "Foto"	BLOB SUB_TYPE 0 SEGMENT SIZE 100,
 PRIMARY KEY ("id_tovara")
);
Цитата:
- Только сисадмин может попросить у начальства 20$ на память...
Claster вне форума Ответить с цитированием
Старый 13.05.2009, 18:01   #6
Dark_Spirit
Форумчанин
 
Аватар для Dark_Spirit
 
Регистрация: 05.02.2009
Сообщений: 324
По умолчанию

ну вот, вы ведь сами можете сейчас ответить на свой вопрос если вниматильно посмотрите на таблицы
ВНИМАНИЕ ДАЮ НАВОДКУ: а есть ли у вас поле ID в таблице товар?
Тяжело быть бестолковым.....
Dark_Spirit вне форума Ответить с цитированием
Старый 13.05.2009, 18:04   #7
Claster
Форумчанин
 
Аватар для Claster
 
Регистрация: 02.09.2008
Сообщений: 340
По умолчанию

НУмутил так и не работает
Код:
CREATE TRIGGER "TR_GEN_TOVAR_ID" FOR "TOVAR"
ACTIVE BEFORE INSERT POSITION 0
AS
begin
  IF (NEW.ID_TOVARA IS NULL) THEN
    NEW.ID_TOVARA=GEN_ID(GEN_TOVAR_ID,1);
end
Цитата:
- Только сисадмин может попросить у начальства 20$ на память...
Claster вне форума Ответить с цитированием
Старый 13.05.2009, 18:07   #8
Dark_Spirit
Форумчанин
 
Аватар для Dark_Spirit
 
Регистрация: 05.02.2009
Сообщений: 324
По умолчанию

а чё пишет?
Тяжело быть бестолковым.....
Dark_Spirit вне форума Ответить с цитированием
Старый 13.05.2009, 18:07   #9
Claster
Форумчанин
 
Аватар для Claster
 
Регистрация: 02.09.2008
Сообщений: 340
По умолчанию

Всё разобрался проблема была с Регистрами букв
Цитата:
- Только сисадмин может попросить у начальства 20$ на память...
Claster вне форума Ответить с цитированием
Старый 13.05.2009, 18:10   #10
Dark_Spirit
Форумчанин
 
Аватар для Dark_Spirit
 
Регистрация: 05.02.2009
Сообщений: 324
По умолчанию

а попробуйте так:
Код:
CREATE TRIGGER "TR_GEN_TOVAR_ID" FOR "TOVAR"
ACTIVE BEFORE INSERT POSITION 0
AS
begin
  IF (NEW.ID_TOVARA IS NULL) THEN
    NEW.ID_TOVARA=GEN_ID(GEN_SOTR_ID,1);
Тяжело быть бестолковым.....
Dark_Spirit вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Триггеры и хранимые процедуры SQL FreshBreeze Помощь студентам 6 10.05.2009 14:37
Ошибка(C++): error C2041: illegal digit '9' for base '8' TheWanderer Общие вопросы C/C++ 4 02.10.2008 21:11