удалить файл с помощью процедуры MySQL - PullRequest
2 голосов
/ 30 июня 2011

Есть ли способ удалить файл командой SQL?
У меня есть файлы изображений в файловой системе, и ссылки на них в БД. Например:

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;  

Когда категория \ продукт удалена, удаляются ссылки на изображения, принадлежащие удаленной категории \ продукту. (потому что «НА УДАЛЕННОМ КАСКАДЕ»)
Но мне тоже нужно удалить файлы. Что-то вроде:

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

Конечно, возможно создание таблицы всех файлов, которые должны быть удалены. Я спрашиваю, есть ли способ сделать это в режиме реального времени.
Спасибо

1 Ответ

3 голосов
/ 30 июня 2011

Вы не можете сделать это из MySQL. Единственное, что он может сделать, чтобы повлиять на файлы, - это создать новые как часть запроса SELECT ... INTO OUTFILE .... Нет никаких средств для манипулирования внешними файлами, не говоря уже об их удалении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...