Trigirni o'chirish
Ushbu qo'llanmada PostgreSQLda jadvalga biriktirilgan trigirni ma'lumotlar bazasidan butunlay o'chirish uchun DROP TRIGGER buyrug'idan qanday foydalanishni o'rganasiz.
DROP TRIGGER buyrug'i ko'rsatilgan jadvaldan trigirni o'chirib tashlaydi.
DROP TRIGGER buyrug'ining sintaksisi:
DROP TRIGGER [IF EXISTS] trigger_name
ON table_name
[CASCADE | RESTRICT];
Sintaksis tushuntirishi:
trigger_name — o'chirilishi kerak bo'lgan trigir nomi.IF EXISTS — trigir mavjud bo'lmasa, xatolik chiqarmasdan ogohlantirish beradi.ON table_name — trigir biriktirilgan jadval nomi (ko'rsatilishi shart).CASCADE — ushbu trigirga bog'liq barcha ob'ektlarni avtomatik o'chiradi.RESTRICT (sukut bo'yicha) — agar bog'liq ob'ektlar bo'lsa, o'chirishni rad etadi.Avval ombordagi tovar qoldig'i manfiy bo'lib ketishini taqiqlovchi trigir yaratamiz:
DROP TABLE IF EXISTS inventories CASCADE;
CREATE TABLE inventories (
product_id INT NOT NULL,
warehouse_id INT NOT NULL,
quantity INT NOT NULL,
PRIMARY KEY (product_id, warehouse_id)
);
CREATE OR REPLACE FUNCTION prevent_negative_stock()
RETURNS TRIGGER
AS
$$
BEGIN
IF (TG_OP = 'UPDATE' AND NEW.quantity < 0) THEN
RAISE EXCEPTION 'Ombordagi tovar qoldig''i manfiy bo''lishi mumkin emas: ombor_id=%, tovar_id=%',
NEW.warehouse_id, NEW.product_id;
END IF;
RETURN NEW;
END;
$$ LANGUAGE plpgsql;
CREATE TRIGGER inventory_stock_check
BEFORE UPDATE ON inventories
FOR EACH ROW
EXECUTE FUNCTION prevent_negative_stock();
Endi inventory_stock_check trigirini inventories jadvalidan o'chiramiz:
DROP TRIGGER IF EXISTS inventory_stock_check ON inventories;
Trigir muvaffaqiyatli o'chirildi.
[!NOTE]
DROP TRIGGERfaqat trigirning o'zini o'chiradi, lekin unga tegishli bo'lgan funksiya (prevent_negative_stock) ma'lumotlar bazasida saqlanib qoladi. Agar funksiyani ham butunlay yo'qotmoqchi bo'lsangiz, alohidaDROP FUNCTION prevent_negative_stock;buyrug'ini berishingiz kerak.
DROP TRIGGER trigger_name ON table_name buyrug'i jadvaldan trigirni olib tashlaydi.ON table_name ko'rsatilishi majburiydir, chunki bitta nomli trigirlar turli jadvallarda bo'lishi mumkin.