小编典典

使用MySQL程序删除文件

sql

有什么方法可以使用SQL命令删除文件?
我在文件系统中有图像文件,并在DB中链接到它们。例如:

CREATE TABLE products (
    id INT UNSIGNED NOT NULL AUTO_INCREMENT,
    name TINYTEXT NOT NULL,
    category INT UNSIGNED NOT NULL,
    FOREIGN KEY (category) REFERENCES categories(id) ON DELETE CASCADE,
    ............
) ENGINE=InnoDB;
CREATE TABLE images (
    id INT UNSIGNED NOT NULL AUTO_INCREMENT,
    img_link TINYTEXT, /*path and name of JPG/PNG file*/
    product INT UNSIGNED NOT NULL,
    FOREIGN KEY (product) REFERENCES products(id) ON DELETE CASCADE,
    ............
) ENGINE=InnoDB;

删除类别\产品后,删除属于已删除类别\产品的图像的链接。(因为’ON DELETE CASCADE’)
但是我也需要删除文件本身。就像是:

CREATE TRIGGER del BEFORE DELETE ON images FOR EACH ROW CALL delete_file(OLD.img_link);

当然可以创建必须删除的所有文件的表。我问是否有任何实时方法。
谢谢


阅读 170

收藏
2021-04-07

共1个答案

小编典典

您不能在MySQL内部执行此操作。它可以影响文件的唯一操作是在SELECT ... INTO OUTFILE ...查询中创建新文件。没有处理外部文件的功能,更不用说删除它们了。

2021-04-07