mysql - 如何向引用数据类型 blob 列的表添加外键

标签 mysql database

我的问题: 我使用 mysql 创建了两个表 第一个表称为 team,它有团队 ID 和团队名称 第二个表媒体表,它有 id 和 blob 类型的图像 我想在表团队引用中添加外键到媒体表中的列图像 我搜索了谷歌,但我发现我不能这样做 因此,如果我不能,有什么方法可以向保存图像数据的列添加外键引用?

这是团队表

CREATE TABLE `team` (
  `TE_ID` INT(11) NOT NULL,
  `TE_Name` VARCHAR(255) NOT NULL,
  `image` VARCHAR(255) NOT NULL
) ENGINE=INNODB DEFAULT CHARSET=utf8;

还有这个媒体表

CREATE TABLE `media`(
`media_id` INT(11) NOT NULL,
`media_jpg` BLOB
);ENGINE=INNODB DEFAULT CHARSET=utf8;

希望有人能帮助我

最佳答案

作为一般规则,键应该小且易于使用、引用等。不要使用 BLOB 作为外键,而应使用其 ID。例如:

CREATE TABLE `media`(
  `media_id` INT(11) NOT NULL,
  `media_jpg` BLOB
);ENGINE=INNODB DEFAULT CHARSET=utf8;

然后,创建引用此表的表:

CREATE TABLE `team` (
  `TE_ID` INT(11) NOT NULL,
  `TE_Name` VARCHAR(255) NOT NULL,
   image_id INT(11) NOT NULL,
   constraint fk1 foreign key (image_id) references `media` (`media_id`)
) ENGINE=INNODB DEFAULT CHARSET=utf8;

此外,您不需要使用反引号将每个列名称括起来。仅当您的名称带有空格或特殊字符时才使用它们。您的任何表或列名称似乎都不是这种情况。

关于mysql - 如何向引用数据类型 blob 列的表添加外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56084508/

相关文章:

database - 我应该使用哪个数据库用于家庭项目?

mysql - 如何编写通过外键的 SQL 查询

database - 你将如何测试这段代码? (phpUnit)

php - mysql - 如何向列添加计数器?

php - 使用 AJAX、PHP 和 MySQL 链式填充 HTML 选择框

java - 将纬度和经度( double )数据转换为字节数组,以便将其作为 java 中的 Geometry 或 GeometryCollection 值存储在 mySql 中

mysql - 无法插入行并获取外键约束失败错误

PHP/SQL PDO 准备/执行插入语句不起作用

mysql - 这是语义上正确的 SQLite 搜索查询吗?

mysql - 如何加快这个缓慢的查询?