1

カテゴリ テーブルと製品テーブルの 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の問題ですか、それとも私が考慮しなかったものですか?

4

0 に答える 0