Работал ли с триггерами в БД
Python
Middle
Без компании
Работал ли с триггерами в БД
Ответы
Да, работал. Триггеры — это хранимые процедуры, автоматически выполняемые при определенных событиях (INSERT, UPDATE, DELETE) в таблице.
**Пример с SQL (PostgreSQL):**
```
CREATE OR REPLACE FUNCTION log_changes()
RETURNS TRIGGER AS $$
BEGIN
IF TG_OP = 'INSERT' THEN
INSERT INTO audit_log (action, table_name, record_id, change_time)
VALUES ('INSERT', TG_TABLE_NAME, NEW.id, NOW());
ELSIF TG_OP = 'UPDATE' THEN
INSERT INTO audit_log (action, table_name, record_id, change_time)
VALUES ('UPDATE', TG_TABLE_NAME, NEW.id, NOW());
END IF;
RETURN NEW;
END;
$$ LANGUAGE plpgsql;
CREATE TRIGGER track_changes
AFTER INSERT OR UPDATE ON users
FOR EACH ROW EXECUTE FUNCTION log_changes();
```
**Нюансы:**
- Триггеры могут усложнить отладку из-за неявного выполнения.
- Влияют на производительность, особенно при частых операциях.
- В ORM (например, Django) их используют редко, предпочитая сигналы или хуки.
Если нужно работать с триггерами в Python, можно использовать библиотеки типа `psycopg2` для выполнения SQL-запросов.