Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Bagaimana cara menghapus kaskade ketika parentID dan childID berada di tabel yang sama?

Anda hanya perlu memastikan bahwa Anda telah menyiapkan kunci asing dari baris anak ke induknya, dengan ON DELETE CASCASDE opsi diatur pada kunci asing. Ini berfungsi sama baiknya dengan tabel referensi diri seperti halnya referensi dalam tabel terpisah. Untuk menghapus pohon, cukup hapus simpul induk. Semua baris turunan akan segera dihapus.

misalnya Diketahui:

CREATE TABLE MyTable
(
  ID INT NOT NULL PRIMARY KEY,
  ParentID INT  NULL,
  CONSTRAINT FK_MT_Parent FOREIGN KEY (ParentID) REFERENCES MyTable(ID) ON DELETE CASCADE
);

-- And inserting two trees of data:
-- 1-2-3
--   └-4
-- 10 - 11
INSERT INTO MyTable(ID,ParentID) VALUES
    (1,null), (2,1), (3,2), (4,2),
    (10,null), (11,10);

Kita dapat menghapus seluruh pohon pertama hanya dengan menghapus simpul akar:

DELETE FROM MYTable WHERE ID = 1;

SqlFiddle sama

Namun perhatikan bahwa dari Dokumen bahwa ada batasan kedalaman CASCADE menghapus:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL ORDER BY [nilai bidang SET kustom]

  2. Praktik terbaik untuk penanganan kesalahan menggunakan PDO

  3. menampilkan data dari database ke tabel html

  4. Membatasi gabungan kiri untuk mengembalikan satu hasil?

  5. ImportError:Tidak ada modul bernama flask.ext.mysql