sql >> Databáze >  >> RDS >> Mysql

mysql innodb:tabulka description nezobrazuje odkazy na sloupce, co je zobrazuje?

Při testování se cizí klíče na mém počítači nevytvářejí pomocí této syntaxe:

CREATE TABLE bugs (
  ...
  reported_by       VARCHAR(100) REFERENCES accounts(account_name),
  ...
 ) ENGINE = INNODB;

Ale jsou, když použiji tento příkaz create:

CREATE TABLE bugs (
  ...
  reported_by       VARCHAR(100),
  ...
  FOREIGN KEY (reported_by) REFERENCES accounts(account_name)
 ) ENGINE = INNODB;

Snadný způsob, jak zjistit, zda v tabulce existují cizí klíče, je:

show create table bugs_products

Nebo se můžete zeptat na informační schéma:

select
  table_schema
, table_name
, column_name
, referenced_table_schema
, referenced_table_name
, referenced_column_name
from information_schema.KEY_COLUMN_USAGE
where table_name = 'bugs'

Také zkontrolujte, zda používáte úložiště InnoDB. Motor MyISAM nepodporuje cizí klíče. Motor najdete takto:

select table_schema, table_name, engine
from information_schema.TABLES
where table_name = 'bugs'

Pokud se pokusíte vytvořit cizí klíč v tabulce MyISAM, tiše zahodí reference a bude předstírat úspěch.




  1. Vyhněte se zablokování PostgreSQL při provádění operací hromadné aktualizace a mazání

  2. Jak se vyhnout MySQL 'Deadlock nalezený při pokusu o získání zámku; zkuste restartovat transakci'

  3. PHP - Použití PDO s polem klauzulí IN

  4. Úvod do uživatelsky definovaných funkcí v SQL Server