Есть 2 таблицы. Product(сам продукт) и images(id,хранится product_id и путь к картинке). Как правильно реализовать удаление продукта и картинки с бд. Сейчас у меня происходит только удаление продукта (через join вроде удалять нельзя).Как правильно это сделать ? Нужно удалять несколькими запросами ? Можно ли поменять 2 таблицы с MyIsam на MyISAM ? ничего не поломается из-за этого ? что бы можно было воспользоватся каскадным удалением.
Каскадное удаление нужно настроить, к примеру у вас есть таблицы:
Продукты:
CREATE TABLE products (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(255) NOT NULL
);
Картинки:
CREATE TABLE images (
id INT PRIMARY KEY AUTO_INCREMENT,
product_id INT NOT NULL,
FOREIGN KEY (product_id)
REFERENCES products (product_id)
ON DELETE CASCADE
);
И тогда удаляя продукт картинки будут удаляться автоматически.
Можете почитать вот тут более детальный пример.
Если у вас таблицы созданы в MyISAM то их нужно конвертировать в MyISAM, можно это сделать вот так:
Выполняете запрос:
SET @DATABASE_NAME = 'name_of_your_db';
SELECT CONCAT('ALTER TABLE ', table_name, '
ENGINE=MyISAM;') AS sql_statements
FROM information_schema.tables AS tb
WHERE table_schema = @DATABASE_NAME
AND ENGINE
= 'MyISAM'
AND TABLE_TYPE
= 'BASE TABLE'
ORDER BY table_name DESC;
Потом вывод этого запроса копируете и выполняете как новый SQL запрос.
Join только для выборки данных. Нужно будет сделать два запроса, один на удаление из таблицы images (заодно файл удалить) и уже потом удаление из Product.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Решил попробовать сделать простенький клиент-сервер с использованием SOAP и WSDLВсе делал на локальном сервере, все файлы лежат в корне сайта
В классе есть нужный мне методНепонятно объект уже создан или надо его мне создать