0

MySQL に 2 つのテーブルがあるとします。

製品

id (unique)
name

購入

id (unique)
fk_productid (references Product.id)
buyerName

私は InnoDB を使用しており、 からpurchases.fk_productidへの外部キーを作成しましたproduct.id

これまでテーブルに製品がなく、購入もしていないとします。誰かが ID 10 の製品を購入した場合、単純に次のクエリを実行するとエラーが発生します。

INSERT INTO purchases (fk_productid, buyName) VALUES (10, "Andreas")


とにかく購入を挿入するにはどうすればよいですか? 次の 2 つのことが考えられます。

  1. NULL を として追加しますfk_productidが、失敗した場合にクエリで直接行うにはどうすればよいですか?

  2. テーブルにダミーのエントリを追加しproductますが、どうすればよいでしょうか? 自動的に追加するにはどうすればよいですか

    INSERT INTO products (id, name) VALUES (10, "???")
    

他のクエリの前に?

これはトリガー、手順で行うべきですか、それとも私が知らないもっと簡単な方法がありますか?

4

2 に答える 2

1

Well, first I would say you're probably safer to refuse the order and tell the user to come back, because you should be doing things like checking stock, price, etc. in your product table before verifying a purchase.

Anyway, this should solve your immediate problem:

INSERT IGNORE INTO products (id, name, isDummy) VALUES (10, "TBD", 1); // does nothing if product id 10 already exists
INSERT INTO purchases (fk_productid, buyerName) VALUES (10, "Andreas");
于 2013-06-29T17:16:19.383 に答える