Модераторы: Akella
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема с SQL 
V
    Опции темы
Ivan.
  Дата 6.3.2007, 21:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 291
Регистрация: 2.11.2004

Репутация: нет
Всего: 2



Начал писать под Interbase, еще плохо знаю синтексис (в разных СУБД разный синтексис).
Проблема такая:
Есть таблицы: (Если буду описывать словами - ничего не поймете, лучше писать на понятном языке)
Код

CREATE TABLE "Nomenclature" (
    "Key" INTEGER NOT NULL PRIMARY KEY,
    "Name" VARCHAR(100),
    ...
);
CREATE TABLE "UpIncoming" (
    "Key" INTEGER NOT NULL PRIMARY KEY,
    "Nomenclature" INTEGER NOT NULL,
    ...
);
CREATE TABLE "UpOutcoming" (
    "Key" INTEGER NOT NULL PRIMARY KEY,
    "Nomenclature" INTEGER NOT NULL,
    "UpIncoming" INTEGER,
    ...
);

нужно написать тригер на добавление новых данных в таблицу "UpOutcoming", чтобы если поле "UpIncoming" IS NULL - найти первый "UpIncoming" с такойже "Nomenclature"
Код

CREATE TRIGGER "AddUpOutcoming" FOR "UpOutcoming"
AFTER INSERT AS
BEGIN
    IF (NEW."UpIncoming" IS NULL) THEN
    BEGIN
        SELECT NEW."UpIncoming" = MIN("Key")
        FROM "UpIncoming"
        WHERE "Nomenclature" = NEW."Nomenclature"
        GROUP BY "Nomenclature";
    END;
END;

что я нетак написал? В MS SQL все нормально работало.

Это сообщение отредактировал(а) Ivan. - 7.3.2007, 09:59


--------------------
Я могу ВСЁ, вопрос - сколько времени у меня это займет!
PM MAIL ICQ   Вверх
Ivan.
Дата 9.3.2007, 18:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 291
Регистрация: 2.11.2004

Репутация: нет
Всего: 2



Разобрался
Код

CREATE TRIGGER "AddUpOutcoming" FOR "UpOutcoming"
AFTER INSERT AS
BEGIN
    IF (NEW."UpIncoming" IS NULL) THEN
    BEGIN
        SELECT MIN("Key")
        FROM "UpIncoming"
        WHERE "Nomenclature" = NEW."Nomenclature"
        GROUP BY "Nomenclature"
        INTO NEW."UpIncoming";
    END;
END;



--------------------
Я могу ВСЁ, вопрос - сколько времени у меня это займет!
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Interbase"
Alex

Обязательно указание:

1. Версию InterBase (Firebird, Yaffil)

2. Способа доступа (ADO, BDE, IBX и т.д.)

  • КАК ПРАВИЛЬНО ОФОРМИТЬ КОД - ЗДЕСЬ
  • КАК ПРАВИЛЬНО УКАЗАТЬ ТЕКСТ ОШИБКИ - ЗДЕСЬ
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • FAQ раздела лежит здесь!

Если Вам понравилась атмосфера форума, заходите к нам чаще! С Уважением, Akella.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Firebird, Interbase | Следующая тема »


 




[ Время генерации скрипта: 0.2792 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.