使用MySQL中的子类型

时间:2012-12-08 19:25:04

标签: c# .net mysql subtype

我在使用MySQL中的子类型/超类型时遇到了一些麻烦。 我使用C#.NET为我的本地俱乐部制作一个管理系统,我在制作一个不错的数据库时遇到了一些麻烦。

我的数据库如下所示:

超型:

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

和子类型:

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

我有3个子类型,卡片,武器,Ammonution,基本上是相同的东西(虽然我在其中存储不同的东西)

也许我的事情过于复杂,但我想要做的就是,当我创建一张新卡时,会自动生成一个产品(我使用触发器),并且Cards.Prod_id设置为新生成的产品。

我该怎么做? 这是使用子类型的正确方法,还是我做错了什么?

1 个答案:

答案 0 :(得分:2)

您可以使用触发器。但是,还有另一种,我认为更好的方式:

  • 更改产品表 - 将 AUTO_INCREMENT 属性添加到主键。
  • 插入新产品,MySQL将生成新ID
  • 使用 last_insert_id MySQL函数获取最后插入的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);

第一个INSERT墙添加具有自动生成ID的新产品。第二个,将获得这个新ID并将其用于新卡记录。

Using AUTO_INCREMENT