Задача о триггерах в БД ?

и задачки для интервью.
nickb
Уже с Приветом
Posts: 3209
Joined: 08 Aug 1999 09:01
Location: Tampa, FL

Задача о триггерах в БД ?

Post by nickb »

Может это даже не задача, а вопрос.
СУБД - Informix Dynamic Server Version 7.30.UC7

Имеется таблица ip_server c полями
server_id serial(1)
name char(20)
upper_name char(20)
По полю upper_name есть уникальный индекс.

В поле name хранятся данные mixed case. Например "Test_P1". В поле upper_name ДОЛЖНО при этом хранится "TEST_P1", т.е то же самое только в upper case.

Вопрос - надо написать такой trigger, или 2 triggera, чтобы при insert/update этой таблицы в поле upper_name заносилось бы значение UPPER(name). Причем, в таблицу может заноситься одна строка, типа
insert into ip_server values (1, "Test_p1", "TEST_P1")
а может несколько, т.е.
insert into ip_server select server_id, name, upper_name from ip_server_backup

Т.е. получается, что триггер должен срабатываеть FOR EACH ROW. Вроде простая задача то, а вот почему то никак не могу понять, то ли дурак, то ли синтаксис триггеров такой убогий. Да, еще момент, хотелось бы избежать использования хранимых процедур.
User avatar
GlebZ
Уже с Приветом
Posts: 1152
Joined: 03 Jan 2002 10:01
Location: NJ --> MA

Задача о триггерах в БД ?

Post by GlebZ »

Не знаю насчёт Информикса, а в SQLServer я бы не мучился а просто поле upper_name сделал бы formula field upper_name = UPPER(name)

типа:
CREATE TABLE T1
(serverID int NOT NULL,
name char(20) NOT NULL,
upper_name AS UPPER(name)
)
nickb
Уже с Приветом
Posts: 3209
Joined: 08 Aug 1999 09:01
Location: Tampa, FL

Задача о триггерах в БД ?

Post by nickb »

В Informix такого нет в синтаксе создания таблицы <img border="0" title="" alt="[Frown]" src="frown.gif" />
User avatar
GlebZ
Уже с Приветом
Posts: 1152
Joined: 03 Jan 2002 10:01
Location: NJ --> MA

Задача о триггерах в БД ?

Post by GlebZ »

А Inserted/Deleted tables там есть?
Create tigger tr_t1
FOR INSERT, UPDATE
As
UPDATE T1 SET Upper_Name = UPPER(I.Name)
FROM INSERTED I
WHERE T1.ServerID = I.ServerID
Я так понимаю, что ServerID - Unique ?
У меня тут полка целая книжек по информиксу стоит, по наследству досталась <img border="0" title="" alt="[Smile]" src="smile.gif" /> но я как-то там даже упоминания о триггерах не нашёл <img border="0" title="" alt="[Frown]" src="frown.gif" /> А читать это и лень и не зачем

Return to “Головоломки”