Триггер isql (sql везде) выдает ошибку - PullRequest
0 голосов
/ 11 декабря 2011

получена странная ошибка «Корреляция имени« Клуб »не найдена», но таблица «Клуб» находится в БД. Я думаю, что проблема после вставки значений:

ALTER TRIGGER "tg_add_club" AFTER INSERT,
UPDATE ON Club
REFERENCING NEW AS item
FOR EACH ROW
WHEN (item.address NOT IN (SELECT name FROM Place))
BEGIN 
 //DECLARE i_id INTEGER;
 INSERT INTO Place(name)
 VALUES (item.address);
 //SELECT @@identity INTO i_id;
 UPDATE Club SET place = (SELECT id FROM Place WHERE name=item.address)
 WHERE Name = item.name; //AND Place.name = item.address;
END

Я думаю, что проблема где-то после ЗНАЧЕНИЙ (item.address), но я не уверен.

Пробовал разные вещи с ним, но все равно ничего не работает. Спасибо за чтение!

1 Ответ

0 голосов
/ 15 марта 2012

Проблема была в том, что SET place и WHERE Name должны быть одинаковыми, иначе это выдаст мне ошибку. Должно работать сейчас:

ОБНОВЛЕНИЕ Club SET Name = (ВЫБЕРИТЕ id ОТ МЕСТА, ГДЕ name = item.address) ГДЕ Имя = item.name;

Если это новый адрес, то создается случайный идентификатор, и Club получает идентификатор из таблицы, где хранятся все адреса.

...