2017-12-31 29 views
2

私はA、B、Cのような3つのテーブルを持っていました。関係はA(ID)、B(A.ID、C.ID)BはAの外部キーを持ちます。 Cの外部キーMysqlのトリガー、削除後のID番号

私はBが削除されているときにトリガーしたい、それはCも削除されます。問題は、Cのデータ型は整数ではありませんので、私は「置く必要があります私の上で」「この

のようなクエリに
DELETE FROM C WHERE ID = 'AB001'; 

ここで私はこれを置くことができる方法B

BEGIN 
DELETE FROM C WHERE ID = Old.CID ; 
END 

の削除についての私のトリガーです」引き金?

+0

なぜc.idを整数にしないのですか? Sqlの内部を除いて、c.idを気にする人はいません。 – Strawberry

+0

@Strawberry CのIDはSQLのAIではなくカスタマイズされているためです。それはパターンを持っています –

+0

私はそれを感謝します。私が言っていることは、おそらくそうである必要はないということです。公開され、人にやさしいコードは内部IDには関係しません。 – Strawberry

答えて

1

IDOld.TransactionIDは値ではなく、列名です。あなたはどちらかを引用する必要はありません。

私は、トリガーはちょうど間違った方法だと思っています。すでに外部キーを持っている場合は、それをon delete cascadeと定義して、ホイールの再作成の手間を省いてください。

+0

申し訳ありませんが間違った質問は、私はfreignキーを持っているテーブルがあったことを意味します。私は外部キーを持っているテーブルから行を削除するときにしたい、プライマリキーを持つテーブルは、削除する必要がありますどのように行うには? –

+1

私はトリガーが間違ったアプローチのように思えることに同意します。カスケードは問題ありません。単純な削除 – Strawberry

関連する問題