カテゴリ テーブルと製品テーブルの 2 つのテーブルがあります。
外部キーとの直接的な関係がないため、SQL に依存関係はありません。Products テーブルには、ビューでカテゴリ テーブルと結合するためだけに、category_id というフィールドが含まれています。
ここで問題:
この手順をphpで実行すると:
begin
SELECT @lft := lft, @rgt := rgt, @wdt := rgt - lft + 1
FROM categorie
WHERE id = id_categoria;
DELETE FROM categorie WHERE lft BETWEEN @lft AND @rgt;
UPDATE categorie SET rgt = rgt - @wdt WHERE rgt > @rgt;
UPDATE categorie SET lft = lft - @wdt WHERE lft > @rgt;
end
カテゴリとそのすべてのリーフは正しく削除されますが、「category_id」フィールドに削除されたカテゴリ ID の 1 つを含む製品行も削除されます。
それはSQLの問題ですか、それとも私が考慮しなかったものですか?