.net 在MySQL中处理子类型时遇到问题

gcuhipw9  于 2022-12-14  发布在  .NET
关注(0)|答案(1)|浏览(102)

我在MySQL中使用子类型/超类型时遇到了一些问题。
我用C# .NET为我当地的俱乐部做了一个管理系统,我在做一个好的数据库时遇到了一些麻烦。
我的数据库如下所示:
超类型:

========
Product
---------
Prod_id (PK)
Name
Barcode

以及子类型:

=======
Card
--------
Prod_id (FK)
Price

我有3个子类型,CardsWeaponsAmmunition,它们基本上是相同的东西(尽管我在其中存储不同的东西)。
也许我把事情弄得过于复杂了,但我所要做的是,当我创建一张新卡时,自动生成一个产品(我使用触发器),并将Cards.Prod_id设置为新生成的Product.Prod_Id
我该怎么做?
这是使用子类型的正确方法吗?还是我做错了什么?

xpszyzbs

xpszyzbs1#

你可以使用触发器。但是,我认为还有另一个更好的方法:

  • 修改 Product 表-将AUTO_INCREMENT属性添加到主键。
  • 插入新产品,MySQL将生成新ID
  • 使用last_insert_idMySQL函数获取上次插入的ID,并在子表中插入新记录

MySQL示例:

CREATE TABLE Product(
Prod_id INT PRIMARY KEY AUTO_INCREMENT,
Name VARCHAR(40),
Barcode INT
);

CREATE TABLE Card(
Prod_id INT,
Price DECIMAL(8, 2),
FOREIGN KEY (Prod_id) REFERENCES Product(Prod_id)
);

INSERT INTO Product VALUES (NULL, 'phone', 1000);
INSERT INTO Card VALUES(LAST_INSERT_ID(), 10.5);

第一次插入墙添加新产品与自动生成的ID。第二,将获得这个新的ID,并使用它为新的卡记录。
Using AUTO_INCREMENT

相关问题