本のテーブルと音楽のテーブルがあります。これらのテーブルは両方とも、主キーとして Product_ID を持っています。Product_ID 列と type 列 (書籍の場合は 0、音楽の場合は 1) を持つ製品テーブルもあり、Product_Id 列と Type 列はテーブルの主キーです。phpMyAdmin では、これらの 2 つの列に下線が引かれ、表の SHOW COLUMNS には主キーとしてマークされた Type と Product_Id が表示されます。
私が抱えている問題は、トリガーにあります。2 つのトリガーがあり、異なるテーブルを処理するためのいくつかの違いがあります。たとえば、音楽トリガーは次のステートメントを実行します。
INSERT INTO products
SET
Type=1,
Product_Id=NEW.Product_ID,
Title=NEW.Album,
Price=0
book トリガーは同じですが、type=0 と NEW.Album が NEW.Title に置き換えられます。ただし、INSERT クエリを実行しているときに、一部のデータが挿入および削除された後、主キーの重複エラーが発生します。問題は、MySQL データベースが Product_ID 列のみを主キーとして読み取っているため、そこに複製を挿入しようとすると、Type 列の値が異なっていても、このエラーが吐き出されることです。私はここで困惑しています。
商品表
Product_Id int(11) - PK
Title int(11)
Price double
Type int(11) - PK
NewBool tinyint(1)
ミュージックテーブル
Product_ID int(11) - PK
Artist varchar(32)
Album varchar(32)
Genre varchar(32)
Year int(11)
Length double
Rating double
NumRatings int(11)
Studio varchar(64)
本のテーブル
Product_ID int(11) - PK
ISBN bigint(20)
Title text
Author text
Year int(11)
Genre text
Pages int(11)
Publisher text
Edition int(11)
Rating double
NumRatings int(11)