Can I create a trigger to add another record based on the inserted record in the same table?

Поиск
Список
Период
Сортировка
От Mohd Shaiza Ibrahim
Тема Can I create a trigger to add another record based on the inserted record in the same table?
Дата
Msg-id CACOE1QyYrA8JFqWA62q=u4s3dCqq=DYFLvmnCiCTzLdM=70TEA@mail.gmail.com
обсуждение исходный текст
Ответы Re: Can I create a trigger to add another record based on the inserted record in the same table?  (David Johnston <polobo@yahoo.com>)
Список pgsql-general
Hi,

Can you guys please help me? My question sounds like this.

When I insert a new record in a table, can I create a trigger to add
another record based on the inserted record in the same table?

For example,

INSERT INTO employee (emp_id, emp_name) VALUES (0001, 'Jack');

The result:

Select * from employee;

emp_id | emp_name
0001 | Jack
0002 | Bob

I've tried running the statement below but it doesn't work. Infinite
loop i'm guessing.

--CREATE FUNCTION AS .. RETURNS TRIGGER
CREATE OR REPLACE FUNCTION add_employee_trg()
  RETURNS trigger AS
$BODY$ DECLARE

BEGIN

--DELETE STATEMENT
IF tg_op = 'DELETE' THEN
  INSERT INTO employee_bak(emp_id, emp_name, emp_operation)
  VALUES (old.emp_id, old.emp_name, tg_op);
  RETURN old;
END IF;

--INSERT STATEMENT
IF tg_op = 'INSERT' THEN
  INSERT INTO employee_bak(emp_id, emp_name, emp_operation)
  VALUES (new.emp_id, new.emp_name, tg_op);
  RETURN new;
END IF;

--UPDATE STATEMENT
IF tg_op = 'UPDATE' THEN
  INSERT INTO employee_bak(emp_id, emp_name, emp_operation)
  VALUES (old.emp_id, new.emp_name, tg_op);
  RETURN new;
END IF;


END

; $BODY$
  LANGUAGE plpgsql VOLATILE
  COST 100;
ALTER FUNCTION add_employee_trg()
  OWNER TO postgres;

Any help or guide would really be appreciated.

Thanks.

Shai
--
Mohd Shaiza Ibrahim

В списке pgsql-general по дате отправления:

Предыдущее
От: Keith Chen
Дата:
Сообщение: Can't reset password
Следующее
От: Scott Bailey
Дата:
Сообщение: Chicken/egg problem with range types