ошибка в триггере "Column unknown"

Мальчишка
Дата: 12.09.2005 12:14:31
Подскажите пожалуйста, в чем ошибка:
База данных Interbase (6.0), 2 таблицы:
CREATE TABLE "CASE" 
(  "CASEID"	INTEGER NOT NULL,
  "CBUYERSID"	INTEGER NOT NULL,
  "CGOODSID"	INTEGER NOT NULL,
  "CGNAME"	VARCHAR(15) CHARACTER SET WIN1251,
  "CGPRICE"	INTEGER,
  "CKOLVO"	INTEGER,
  "CPRICE"	INTEGER,
 PRIMARY KEY ("CASEID"));

CREATE TABLE "GOODS" 
(  "GOODSID"	INTEGER NOT NULL,
  "GNAME"	VARCHAR(15) CHARACTER SET WIN1251,
  "GSERN"	VARCHAR(10) CHARACTER SET WIN1251,
  "GKOLVO"	INTEGER,
  "GPRICE"	INTEGER,
 PRIMARY KEY ("GOODSID"));
При изменении "CKOLVO" в таблице "Case" должна менятся колонка "CPRICE" и "GKOLVO" (таблицы Goods), но что-то не получается создать триггер, выскакивает ошибка "Dynamic SQL Error SQL error code = -206 Column unknown"
set term !! ;
CREATE TRIGGER updCase for Case
active before update Position 2
as
Declare variable DifKol integer;
Declare variable tGKolvo integer;
/*Declare variable tCGoodsID integer;*/
begin
  DifKol = new.CKolvo - old.CKolvo;
 /* tCGoodsID = CGoodsID;*/
  Select GKolvo from Goods, Case where GoodsID=/*:t*/CGoodsID into :tGKolvo;
  If (DifKol <> 0) then
    If ((tGKolvo + DifKol)>=0) then
      begin
        CPrice = new.CKolvo * CGPrice;
        Update Goods set GKolvo = (GKolvo + :DifKol);
      end else Exception Nehvatka;
end !!
set term ; !!
Мимопроходящий
Дата: 12.09.2005 12:20:39

Ужас какой...

Posted via ActualForum NNTP Server 1.3

srf2000
Дата: 12.09.2005 12:21:18
вот это что такое?

CPrice = new.CKolvo * CGPrice;
srf2000
Дата: 12.09.2005 12:22:14
select тоже хорош

Select GKolvo from Goods, Case where GoodsID=/*:t*/CGoodsID into :tGKolvo;
srf2000
Дата: 12.09.2005 12:23:18
и все заканчивается мегаапдейтом!
браво!

Update Goods set GKolvo = (GKolvo + :DifKol);
Мальчишка
Дата: 12.09.2005 12:27:51
Дело в том, что я в клиент-серверных БД новичек, не в курсе чего можно, а чего нет ;).
Буду исправлять
Kull Damned
Дата: 12.09.2005 12:31:11
Афтар, купи книгу п SQL, пока не угробил БД предприятия, которое любезно предоставило тебе место практики.

Posted via ActualForum NNTP Server 1.3

Гаджимурадов Рустам
Дата: 12.09.2005 12:31:14
Да дело не в клиент-серверных ПО.
Просто думай что будет делать сервер, когда ты ему скормишь свои запросы.

P.S. Хорошо бы еще думать как он это будет делать - но тебе это пока рано :)
Мальчишка
Дата: 12.09.2005 12:34:13
Теперь вот что вышло:
set term !! ;
CREATE TRIGGER "updCase" for "CASE"
active before update Position 2
as
Declare variable DifKol integer;
Declare variable tGKolvo integer;
Declare variable tCGoodsID integer;
begin
  DifKol = new.CKolvo - old.CKolvo;
  tCGoodsID = CGoodsID;
  Select GKolvo from Goods /*Case*/ where GoodsID=:tCGoodsID into :tGKolvo;
  If (DifKol <> 0) then
    If ((tGKolvo + DifKol)>=0) then
      begin
        CPrice = CKolvo * CGPrice;
        tGKolvo=tGKolvo+DifKol;
        Update "Goods" set GKolvo = :tGKolvo;
      end else Exception Nehvatka;
end !!
set term ; !!
Ошибка та же самая :\
З.Ы.: делаю задание не по практике, по инсту...
Гаджимурадов Рустам
Дата: 12.09.2005 12:40:15
Мальчишка
Select GKolvo from Goods /*Case*/ where GoodsID=:tCGoodsID into :tGKolvo;
Может for select?