Rumah > pangkalan data > tutorial mysql > Bagaimanakah Saya Boleh Menguatkuasakan Integriti Rujukan Antara Jadual dalam Pangkalan Data Berbeza?

Bagaimanakah Saya Boleh Menguatkuasakan Integriti Rujukan Antara Jadual dalam Pangkalan Data Berbeza?

Barbara Streisand
Lepaskan: 2025-01-12 14:48:42
asal
919 orang telah melayarinya

How Can I Enforce Referential Integrity Between Tables in Different Databases?

Menguatkuasakan Integriti Rujukan Antara Jadual dalam Pangkalan Data Berbeza: Penyelesaian

Mencipta perhubungan kunci asing secara langsung antara jadual dalam pangkalan data yang berasingan selalunya mengakibatkan ralat "Rujukan kunci asing silang pangkalan data tidak disokong." Had ini memerlukan kaedah alternatif untuk mengekalkan integriti rujukan. Satu pendekatan sedemikian melibatkan penggunaan pencetus pangkalan data.

Memanfaatkan Pencetus Pangkalan Data

Pencetus membenarkan pelaksanaan kod tersuai sebagai tindak balas kepada peristiwa pangkalan data tertentu (INSERT, UPDATE, DELETE). Kita boleh menggunakan pencetus pada jadual dalam pangkalan data sekunder (database2.table2) yang mengandungi kunci asing untuk menguatkuasakan kekangan.

Contoh Pelaksanaan

Pencetus boleh dilaksanakan seperti berikut:

<code class="language-sql">CREATE TRIGGER dbo.MyTableTrigger ON dbo.MyTable AFTER INSERT, UPDATE AS
BEGIN
    IF NOT EXISTS(SELECT PK FROM OtherDB.dbo.TableName WHERE PK IN (SELECT FK FROM INSERTED))
    BEGIN
        -- Handle the integrity violation (e.g., rollback transaction or raise an error)
    END
END</code>
Salin selepas log masuk

Pencetus ini memintas operasi INSERT dan UPDATE pada dbo.MyTable. Ia mengesahkan sama ada kunci utama yang dirujuk wujud dalam OtherDB.dbo.TableName. Jika rujukan kunci asing tidak sah, pencetus mengendalikan pelanggaran, berpotensi melancarkan transaksi atau menimbulkan pengecualian.

Pertimbangan Penting:

Walaupun pencetus menawarkan penyelesaian, ia bukanlah pendekatan yang optimum. Amalan terbaik kekal untuk mereka bentuk skema pangkalan data anda dengan kedua-dua jadual berada dalam pangkalan data yang sama untuk membenarkan kekangan kunci asing langsung. Kaedah berasaskan pencetus ini harus dianggap sebagai penyelesaian untuk situasi di mana penstrukturan semula pangkalan data tidak praktikal.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menguatkuasakan Integriti Rujukan Antara Jadual dalam Pangkalan Data Berbeza?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan