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

referensi kunci asing mysql dari kunci komposit

MySQL memiliki banyak pembatasan pada kunci asing . Di antara orang-orang yang mungkin menghalangi Anda. . .

  • Kedua tabel harus menggunakan mesin INNODB.
  • "Dalam tabel referensi, harus ada indeks di mana kolom kunci asing terdaftar sebagai kolom pertama dalam urutan yang sama. "

Kode ini berfungsi di versi saya (5.1.62).

create table DEP_FACULTY(
  LNAME varchar(50),
  FNAME varchar(50),
  EMAIL varchar(70) primary key
) ENGINE = INNODB;

insert into DEP_FACULTY values ('Gregor', 'Brandich', '[email protected]');

create table STUDENT(
  LNAME varchar(50),
  FNAME varchar(50),
  ID char(9) primary key,
  ASSIGNED_ADVISOR_EMAIL varchar(70),
  foreign key (ASSIGNED_ADVISOR_EMAIL) references DEP_FACULTY(EMAIL) ON DELETE SET NULL,
  IS_ADVISED tinyint(1)
) ENGINE = INNODB;

insert into STUDENT values ('Charmaine', 'DePeletier', 'cmd', '[email protected]', 1);

create table ADVISE_HIST(
  STUDENT_ID char(9),
  foreign key (STUDENT_ID) references STUDENT(ID),
  ACTUAL_ADVISOR_EMAIL char(70) NOT NULL,
  foreign key (ACTUAL_ADVISOR_EMAIL) references DEP_FACULTY(EMAIL),
  DATE_ADVISED date,
  primary key REF_ADVISE_HIST (STUDENT_ID, DATE_ADVISED)
) ENGINE = INNODB;

insert into ADVISE_HIST values ('cmd', '[email protected]', CURRENT_DATE);
insert into ADVISE_HIST values ('ctd', '[email protected]', CURRENT_DATE);

Dari dua sisipan terakhir, yang pertama berfungsi. Yang kedua harus menampilkan kesalahan batasan kunci asing.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Urutan Logis MySql Oleh

  2. cara menggunakan (useUnicode=yes characterEncoding=UTF-8) dengan DBCP

  3. Mendapatkan kesalahan Entity Framework saat menjalankan migrasi pada database MySQL. Penggunaan indeks spasial/teks lengkap/hash yang salah dan urutan indeks eksplisit

  4. MySQL:Pilih baris yang hanya memiliki nilai unik kecuali kolom

  5. MySQL:Konversi INT ke DATETIME