Триггерлер жана окуялар (Events)
Маалымат базасынын тарабындагы автоматтык логика: маалымат өзгөргөндө же график боюнча иштейт
Негизги идея: триггер — бул таблицага сап киргизилген, жаңыртылган же өчүрүлгөн ар бир жолу маалымат базасы автоматтык түрдө аткарган SQL блогу. Аны сиз чакырбайсыз — муну кыймылдаткыч жасайт. Окуя (event) — ошол эле идея, бирок сааттар боюнча: тиркемесиз, график боюнча иштеген SQL. Экөө тең логиканы маалымат базасынын ичине которот, бул аудит журналдары жана туунду маалыматтар үчүн күчтүү, бирок ошондой эле бул тиркеменин кодун
grep кылуу менен табылбай турган жашыруун логика.
Бул теманын аягында сиз мына буларды кыла аласыз:
INSERT,UPDATEжанаDELETEүчүнBEFOREжанаAFTERтриггерлерин жазуу;NEWжанаOLDпсевдо-саптарын туура окуу жана жазуу;- эки классикалык үлгүнү куруу: аудит журналы жана туунду / денормалдашкан маалымат;
SIGNALменен өзгөртүүнү текшерүү же четке кагуу;CREATE EVENTаркылуу мезгилдүү тейлөөнү пландаштыруу; жана- базадагы жашыруун логика качан жардам берерин, качан колдоого зыян келтирерин чынчылдык менен баалоо.
1. Мисал схема
Бул теманын бардык суроо-талаптары бир кичинекей дүкөн базасы менен иштейт. Биз товарларды, кардарлар берген заказдарды, ар бир заказдын саптарын жана баа өзгөрүүлөрүн жаза турган аудит таблицасын сактайбыз.
CREATE TABLE products (
product_id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(80) NOT NULL,
price DECIMAL(10,2) NOT NULL,
stock INT NOT NULL DEFAULT 0
);
CREATE TABLE orders (
order_id INT PRIMARY KEY AUTO_INCREMENT,
customer VARCHAR(80) NOT NULL,
status VARCHAR(20) NOT NULL DEFAULT 'new',
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
);
CREATE TABLE order_items (
item_id INT PRIMARY KEY AUTO_INCREMENT,
order_id INT NOT NULL,
product_id INT NOT NULL,
quantity INT NOT NULL
);
CREATE TABLE price_audit (
audit_id INT PRIMARY KEY AUTO_INCREMENT,
product_id INT NOT NULL,
old_price DECIMAL(10,2),
new_price DECIMAL(10,2),
changed_by VARCHAR(80),
changed_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
);
INSERT INTO products (name, price, stock) VALUES
('Notebook', 3.50, 100),
('Pen', 1.20, 40),
('Backpack', 25.00, 10);
Текчеде үч товар бар. Төмөндөгүлөрдүн баары ушул таблицалар өзгөргөндө автоматтык иштеген жүрүм-турумду кошот.