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

Batasan kunci asing MySQL menghilang

Untuk memperjelas, beginilah tampilan tabel setelah batasan kunci asing diterapkan:

CREATE TABLE `leerplan_oefenreeks` (
  `leerplan_oefenreeks_id` int(11) NOT NULL AUTO_INCREMENT,
  `leerplan_id` int(11) NOT NULL,
  `oefenreeks_id` int(11) NOT NULL,
  `plaats` int(11) NOT NULL,
  PRIMARY KEY (`leerplan_oefenreeks_id`),
  KEY `fk_leerp_oefenr_leerplan` (`leerplan_id`),
  KEY `fk_leerp_oefenr_oefenreeks` (`oefenreeks_id`),
  CONSTRAINT `fk_leerp_oefenr_oefenreeks` FOREIGN KEY (`oefenreeks_id`) REFERENCES `oefenreeks` (`oefenreeks_id`) ON DELETE CASCADE,
  CONSTRAINT `fk_leerp_oefenr_leerplan` FOREIGN KEY (`leerplan_id`) REFERENCES `leerplan` (`leerplan_id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=latin1 ;

Perhatikan bahwa indeks fk_leerp_oefenr_leerplan dan fk_leerp_oefenr_oefenreeks ditambahkan oleh mysql secara otomatis.

Setelah Anda menambahkan batasan kunci unik pertama :

ALTER TABLE leerplan_oefenreeks ADD CONSTRAINT un_leerp_oefenr UNIQUE(leerplan_id, oefenreeks_id);

Mysql menghapus indeks fk_leerp_oefenr_leerplan karena tidak lagi diperlukan untuk mendukung pemeriksaan kunci asing pada kolom leerplan_id. Pada titik ini, tabel terlihat seperti ini:

CREATE TABLE `leerplan_oefenreeks` (
  `leerplan_oefenreeks_id` int(11) NOT NULL AUTO_INCREMENT,
  `leerplan_id` int(11) NOT NULL,
  `oefenreeks_id` int(11) NOT NULL,
  `plaats` int(11) NOT NULL,
  PRIMARY KEY (`leerplan_oefenreeks_id`),
  UNIQUE KEY `un_leerp_oefenr` (`leerplan_id`,`oefenreeks_id`),
  KEY `fk_leerp_oefenr_oefenreeks` (`oefenreeks_id`),
  CONSTRAINT `fk_leerp_oefenr_leerplan` FOREIGN KEY (`leerplan_id`) REFERENCES `leerplan` (`leerplan_id`) ON DELETE CASCADE,
  CONSTRAINT `fk_leerp_oefenr_oefenreeks` FOREIGN KEY (`oefenreeks_id`) REFERENCES `oefenreeks` (`oefenreeks_id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=latin1 ;

Singkat cerita, Sqlyog hanya menampilkan indeks di tampilan hierarki di sebelah kiri, jika Anda ingin melihat kunci asing, pilih tabel di tampilan hierarki dan tekan F10.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Apa perintah SQL untuk mengembalikan nama bidang tabel?

  2. Mengabaikan apostrof dalam pencarian mysql

  3. Bekerja dengan Kursor SQL

  4. Matematika PHP pada Data SQL

  5. Menggunakan MySql, dapatkah saya mengurutkan kolom tetapi 0 datang terakhir?