我正在創建一個 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
...
我不知道,我該怎么做?
uj5u.com熱心網友回復:
由于要插入的資料來自資料庫外部,因此您不能通過資料庫工具強制執行在插入父表后插入子表。您需要以一種方式設計您的應用程式,以便它在彼此之后填充兩個表。
應用程式可以做的是將兩個插入陳述句封裝到單個事務中,以確保兩個插入都成功或兩個都回滾,從而使資料庫處于一致狀態。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/342399.html
上一篇:MySQLCHAR_LENGTH(str)在與不同的字符集介紹器一起使用時,有時會為相同的字串文字產生不同的輸出
下一篇:SQL中兩個表之間的條件更新
