DROP TABLE IF EXISTS employee;
CREATE TABLE employee
(
emp_name text,
salary int,
update_dt timestamp,
update_usr_id text DEFAULT '0'
);
insert into employee values ('Петр Болотин', 100000);
-- Требуется создать триггер, который при любом добавлении или изменении строки в таблице сохраняет в этой строке
-- информацию о текущем пользователе и отметку времени. Кроме того, он требует, чтобы было указано имя сотрудника и
-- зарплата задавалась положительным числом.
CREATE OR REPLACE FUNCTION update_emp_view() RETURNS TRIGGER AS $$
BEGIN
IF NEW.salary <= 0 OR NEW.emp_name IS NULL
THEN RETURN NULL;
ELSE
NEW.update_dt = now();
NEW.update_usr_id = CURRENT_USER;
RETURN NEW;
END IF;
END;
$$ LANGUAGE plpgsql;
CREATE OR REPLACE TRIGGER emp_audit
BEFORE INSERT OR UPDATE ON employee
FOR EACH ROW
EXECUTE PROCEDURE update_emp_view();
insert into employee values ('Алексей Бердовскийd', 300);
select * from employee;
insert into employee values ('Ильяd', -1);
select * from employee;
-- drop trigger emp_audit on employee;