Bagaimana untuk menggunakan pencetus dan transaksi dalam pangkalan data MySQL

WBOY
Lepaskan: 2023-05-28 16:25:19
ke hadapan
1097 orang telah melayarinya

1. Pencetus

Konsep

Prigger ialah kaedah yang disediakan oleh pelayan SQL kepada pengaturcara dan penganalisis data untuk memastikan integriti data dicetuskan oleh peristiwa. Pencetus sering digunakan untuk menguatkuasakan kekangan integriti data dan peraturan perniagaan.

2. Operasi pencetus

Buat jadual data akaun dan log_akaun:

CREATE TABLE account(
	id INT PRIMARY KEY AUTO_INCREMENT,
	NAME VARCHAR(20),			
	money DOUBL
);
INSERT INTO account VALUES (NULL,'张三',1000),(NULL,'李四',1000);
CREATE TABLE account_log(
	id INT PRIMARY KEY AUTO_INCREMENT,
	operation VARCHAR(20),			
	operation_time DATETIME,		
	operation_id INT,			
	operation_params VARCHAR(200)      
);
Salin selepas log masuk

Tambah, padam dan ubah suai operasi pencetus

rreee

Lihat operasi pemadaman pencetus

// 语法格式: BEFORE|AFTER    INSERT: 插入 UPDATE:更新  DELETE:删除
// DELIMITER $
// CREATE TRIGGER 触发器名称
// BEFORE|AFTER INSERT|UPDATE|DELETE
// ON 表名
// FOR EACH ROW
// BEGIN
// 	触发器要执行的功能;
// END$
// DELIMITER ;


// 创建INSERT型触发器。用于对account表新增数据进行日志的记录
DELIMITER $

CREATE TRIGGER account_insert
AFTER INSERT
ON account
FOR EACH ROW
BEGIN
	INSERT INTO account_log VALUES (NULL,'INSERT',NOW(),new.id,CONCAT('插入后{id=',new.id,',name=',new.name,',money=',new.money,'}'));
END $

DELIMITER ;

// 向account表添加一条记录
INSERT INTO account VALUES (NULL, '王五', 2000);

// 查询account表
SELECT * FROM account;
Salin selepas log masuk

3 Transaksi

Konsep

Dalam pangkalan data hubungan, transaksi boleh menjadi pernyataan SQL, kumpulan pernyataan SQL atau satu. keseluruhan program. Cirinya ialah unit ini sama ada berjaya atau gagal pada masa yang sama, dan setiap pernyataan SQL dalam unit bergantung antara satu sama lain untuk membentuk keseluruhan. Urus niaga harus mempunyai empat sifat: atomicity, konsistensi, pengasingan dan ketahanan. Empat sifat ini selalunya dipanggil sifat ASID.

Empat ciri utama:

  • Atomicity: Transaksi ialah unit kerja yang tidak boleh dibahagikan, dan transaksi mengandungi Semua operasi sama ada berjaya atau gagal dan digulung semula.

  • Ketekalan: Sesuatu urus niaga mesti menukar pangkalan data daripada satu keadaan konsistensi kepada keadaan konsistensi yang lain, iaitu, transaksi mesti dilaksanakan sebelum dan selepas pelaksanaan dalam keadaan yang konsisten.

  • Pengasingan: Apabila berbilang pengguna mengakses pangkalan data secara serentak, seperti semasa mengendalikan jadual yang sama, transaksi yang dibuka oleh pangkalan data untuk setiap pengguna tidak boleh digunakan oleh pengguna lain. urus niaga Gangguan oleh operasi, berbilang transaksi serentak mesti diasingkan antara satu sama lain

  • Kegigihan: Sebaik sahaja transaksi diserahkan, perubahan pada data dalam pangkalan data Ia kekal , dan operasi melakukan transaksi tidak akan hilang walaupun sistem pangkalan data menghadapi kegagalan.

4. Operasi transaksi

Proses asas

  • Buka transaksi: Rekod titik balik , dan maklumkan pelayan

  • untuk melaksanakan pernyataan SQL: Laksanakan satu atau lebih pernyataan sql khusus

  • Tamat transaksi (serahkan | gulung balik): Serah : Tiada masalah berlaku, data dikemas kini; Timbal balik : Masalah berlaku, data dipulihkan kepada keadaan apabila transaksi dibuka

Operasi asas

// 查看标准语法: SHOW TRIGGERS;
// 查看触发器
SHOW TRIGGERS;


// 删除标准语法:DROP TRIGGER 触发器名称;
// 删除account_delete触发器
DROP TRIGGER account_delete;
Salin selepas log masuk

Kaedah penyerahan transaksi

-- 开启事务
START TRANSACTION;

-- 执行SQL语句
UPDATE account SET money=money-500 WHERE NAME='张三';

-- 回滚事务(出现问题)
ROLLBACK;

-- 提交事务(没出现问题)
COMMIT;
Salin selepas log masuk

Tahap pengasingan transaksi

Empat tahap pengasingan

  • Baca tanpa komitmen: baca tanpa komitmen

  • Baca komited: baca komited (peringkat lalai pangkalan data Oracle/SQL Server )< . >

  • boleh menyebabkan masalah:

  • Bacaan kotor: merujuk kepada Data dalam transaksi tidak komited lain adalah dibaca semasa pemprosesan transaksi, menyebabkan keputusan pertanyaan tidak konsisten antara dua pertanyaan

Bacaan tidak boleh berulang: merujuk kepada transaksi Semasa pemprosesan, data diubah suai dan diserahkan dalam urus niaga lain telah dibaca, mengakibatkan keputusan tidak konsisten bagi dua pertanyaan

  • Bacaan hantu: pilih sama ada rekod tertentu wujud, Rekod ini tidak wujud disediakan untuk dimasukkan, tetapi apabila sisipan dilaksanakan, didapati rekod itu sudah wujud dan tidak boleh dimasukkan. Atau operasi padam tidak wujud, tetapi didapati pemadaman berjaya

  • Operasi pengasingan

    // 查看提交方式
    SELECT @@AUTOCOMMIT;  -- 1代表自动提交    0代表手动提交
    // 修改事务的提交方式
    SET @@autocommit=1;
    Salin selepas log masuk
    Nota: Tahap pengasingan menjadi lebih dan lebih selamat dari kecil ke besar, tetapi kecekapannya semakin rendah, jadi tidak digalakkan untuk menggunakan tahap pengasingan READ UNCOMMITTED dan BOLEH BERSIRI.

    Atas ialah kandungan terperinci Bagaimana untuk menggunakan pencetus dan transaksi dalam pangkalan data MySQL. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:yisu.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan