【发布时间】:2021-12-14 21:05:18
【问题描述】:
我正在创建一个 mysql 数据库,用于存储不同格式和大小的文件,例如 pdf、imgs、zip 等等。
所以我开始寻找有关 blob 数据类型的示例(我认为这是存储上述文件的正确数据类型),我偶然发现了这个 SOquestion。基本上答案的建议不是将 blob 文件直接存储到“主”表中,而是创建两个不同的表,一个用于文件描述,另一个用于 blob 本身(因为这些表可能很重)。并通过外键约束连接这些表,以将文件与其描述联系起来,并在需要时执行连接操作以检索所需的 blob。
所以我创建了以下表格:
create table if not exists file_description(
id int auto_increment primary key,
description_ varchar(200) not null,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
) engine=INNODB;
create table if not exists files(
id int auto_increment primary key,
content longblob not null,
format_extension varchar(10) not null,
foreign key (id) references file_description(id)
on update cascade
on delete cascade
)engine=INNODB;
但我如何才能强制在每次插入 file_description 表之后直接插入到 files 表中?
我不是专家,但就我在触发器上看到的情况而言,它们的使用方式与我在这里想要做的不同。类似的东西
create trigger whatever
on file_description after insert
...
我不知道,我该怎么做?
【问题讨论】:
-
我的经验法则:文件进入文件存储,数据进入数据库。
-
文件只保存在数据库中,当有限制时,更大的表意味着更慢的查询
-
@danblack 谢谢!绝对将其保存在我的书签中,但我问的是另一件事
标签: mysql triggers foreign-keys