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

SQL Tidak dapat membuat tabel (errno:150)

Anda harus membuat satu batasan kunci asing yang merujuk pada penuh kunci utama atau unik dari setiap tabel yang direferensikan. Anda tidak dapat membuat kunci asing terpisah untuk masing-masing kolom di tengah kunci utama tabel referensi.

CREATE TABLE prospect
(Custname      VARCHAR(25) NOT NULL,
 Carmake       VARCHAR(25) NOT NULL,
 Carmodel      VARCHAR(20) NOT NULL,
 Caryear       VARCHAR(4) NOT NULL,
 Carextcolour  VARCHAR(10) NOT NULL,
 Cartrim       VARCHAR(10) NOT NULL,
 Optioncode    CHAR(4),
 CONSTRAINT pkprospect PRIMARY KEY (Custname, Carmake, Carmodel, Caryear, Carextcolour,           Cartrim, Optioncode),
 CONSTRAINT fkprospect FOREIGN KEY (Custname) REFERENCES customer(Custname),
 CONSTRAINT fk2prospect FOREIGN KEY (Carmake, Carmodel, Caryear, Carextcolour, Cartrim)
   REFERENCES car(Carmake, Carmodel, Caryear, Carextcolour, Cartrim),
 CONSTRAINT fk7prospect FOREIGN KEY (Optioncode) REFERENCES optiontable(Optioncode)
);

Saya menggunakan kata harus di atas karena InnoDB sebenarnya sedikit lebih lunak daripada standar ANSI/ISO SQL dalam hal kunci asing. SQL standar mengatakan kolom kunci asing harus menjadi daftar lengkap kolom dari kunci utama atau kunci unik yang direferensikan.

InnoDB mengizinkan Anda untuk menggunakan subset kolom, selama itu adalah awalan kiri dari kolom tersebut. Tetapi Anda tidak boleh melakukan itu, karena Anda mendapatkan hasil yang sangat membingungkan ketika baris anak dapat mereferensikan banyak baris dalam tabel induknya.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Docker php_network_getaddresses error

  2. Meniru SEQUENCE yang aman untuk transaksi di MySQL

  3. login dengan nama pengguna atau alamat email di php

  4. Mengapa konektor mysql putus (Koneksi terputus ke server MySQL selama kesalahan kueri)

  5. Pilih pernyataan di dalam loop dalam Prosedur Tersimpan Mysql