mysql - 约束和索引中的命名约定

标签 mysql sql

索引和约束是否可以同名,推荐的命名约定是什么

CREATE  TABLE IF NOT EXISTS `mydb`.`books` (
 `id` INT NOT NULL AUTO_INCREMENT ,
  `isbn` VARCHAR(45) NOT NULL ,
  `category_id` INT NOT NULL ,
  `publisher_id` INT NOT NULL ,
  `year` YEAR NULL ,
  PRIMARY KEY (`id`) ,
  INDEX `fk_books_category_id` (`category_id` ASC) ,
  INDEX `fk_books_publisher_id` (`publisher_id` ASC) ,
  CONSTRAINT `fk_books_category_id`
    FOREIGN KEY (`category_id` )
    REFERENCES `mydb`.`categories` (`id` )
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `fk_books_publisher_id`
    FOREIGN KEY (`publisher_id` )
    REFERENCES `mydb`.`publishers` (`id` )
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;

最佳答案

没有这样的标准。虽然,在MYSQL中不需要给外键约束一个符号名。如果没有给出名称,InnoDB 会自动创建一个唯一的名称。

尽管许多程序员更喜欢使用idx_ 作为索引前缀,使用fk_ 作为外键。

关于mysql - 约束和索引中的命名约定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18302278/

相关文章:

c# - 尝试使用 SELECT 方法在列表框中显示表数据

mysql - SQL查询返回所有没有特定值的id

java - JTable 不显示 SQL 准备语句的 AS 部分中设置的列名

sql - 2017 年之前的 SQL Server 的 String_agg

sql - 计算实际停机时间忽略日期/时间重叠

mysql - 使用 [[ :<:]][[:>:]]? 时,空格是否被视为字边界

mysql - 多表 JOIN 问题

php - mysql从第一个表插入两个表id

sql - 甲骨文 SQL : How to read-and-increment a field

php - 无法在 Laravel 中运行 php artisan migrate