sql >> Database >  >> RDS >> Mysql

MySQL-tabel met een varchar-kolom als externe sleutel

U kunt alleen een externe sleutel hebben die verwijst naar een uniek veld. Pas uw network_classes-tabel aan zodat het categorieveld uniek is, zoals hieronder

 CREATE TABLE network_classes (
    id TINYINT(1) UNSIGNED NOT NULL AUTO_INCREMENT,
    category VARCHAR(80) NOT NULL,
    PRIMARY KEY(id),
    UNIQUE KEY `category_UNIQUE` (`category`),
    KEY `key_1` (`id`,`category`)
)
ENGINE=InnoDB;


CREATE TABLE networks (
    id TINYINT(3) UNSIGNED NOT NULL AUTO_INCREMENT,
    name VARCHAR(100) NOT NULL,
    category VARCHAR(80) NOT NULL,
    director_id TINYINT(3) UNSIGNED NULL,
    director_name VARCHAR(100) NULL,
    description VARCHAR(1000) NULL,
    last_modified TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP,
    user_id SMALLINT UNSIGNED NULL,
    PRIMARY KEY(id),
    KEY `networks_fk1` (`category`),
    CONSTRAINT `networks_fk1` FOREIGN KEY (`category`) REFERENCES `network_classes` (`category`) ON DELETE NO ACTION,
    INDEX networks_index2471(name),
    INDEX networks_index2472(director_id, director_name)
)
ENGINE=InnoDB;

U zou dan de gewenste externe sleutel moeten kunnen toevoegen



  1. Automatische gegevensverzameling over voltooide taken in MS SQL Server

  2. Werken met Structured Query Language (SQL) met Microsoft Access 2010, 2013, 2016 en 2019

  3. PostgreSQL Checkpoint-statistieken meten

  4. Zijn deze twee functies overkill voor ontsmetting?