当前位置: 首页 > 面试题库 >

如何在MySQL中的两个或多个表中具有唯一ID?

柳墨一
2023-03-14
问题内容

我有一个表格events,其中包含所有新信息。该表用作所有新闻源查询的参考,因此从那里选择事件项,并从正确的表中检索与该事件相对应的信息。

现在,这是我的问题。我E_ID在事件表中有,它对应于不同表中事件的ID,例如T_IDfor tracksS_IDfor
status等等。这些ID可能相同,所以暂时我只是使用了一个不同的auto_increment值对于每个这样status在500
tracks上以0等开始的表。显然,我不想这样做,因为我还不知道哪个表中的数据最多。我以为status会很快超过tracks

该信息event通过触发器插入到表中。这是一个例子。

BEGIN
INSERT INTO events (action, E_ID, ID)
VALUES ('has some news.', NEW.S_ID, NEW.ID);
END

那是他的状态表。

我可以添加触发器以确保NEW.S_ID!= E_ID当前是否在使用中events,如果确实更改了它,则可以进行更改S_ID

另外,当自动递增时,是否可以使用某种键来引用事件,以S_ID使S_ID不会递增到的值E_ID

这些是我的想法,我认为后一种解决方案会更好,但我怀疑是否可能,但需要另一个参考表,而且过于复杂。


问题答案:

在表之间要求唯一的ID的确很少见,但是这里有一个解决方案。

/* Create a single table to store unique IDs */
CREATE TABLE object_ids (
    id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
    object_type ENUM('event', ...) NOT NULL
) ENGINE=InnoDB;

/* Independent object tables do not auto-increment, and have a FK to the object_ids table */
CREATE TABLE events (
    id INT UNSIGNED NOT NULL PRIMARY KEY,
    ...
    CONSTRAINT FOREIGN KEY (id) REFERENCES object_ids (id)
) ENGINE=InnoDB;

/* When creating a new record, first insert your object type into the object_ids table */
INSERT INTO object_ids(object_type) VALUES ('event');
/* Then, get the auto-increment id. */
SET @id = LAST_INSERT_ID();
/* And finally, create your object record. */
INSERT INTO events (id, ...) VALUES (@id, ...);

显然,您将为events其他表复制表的结构。



 类似资料:
  • 它重复显示每个房间类型的酒店名称匹配该酒店id,但我想显示所有房间类型的酒店名称一次。我怎样才能做到这一点? 谢谢。

  • 问题内容: 我有两个要连接的表。 TABLE_A: TABLE_B: RESULT_TABLE: 我试图使用这样的东西: 但是,结果仅包括该列存在于TABLE_A中的行。 有没有办法连接TABLE_A和TABLE_B以产生RESULT_TABLE中显示的结果? 问题答案: 如果要获得所有结果,则需要一个 外部 联接,而不是一个 内部 联接。(内部仅返回匹配的行;外部返回所有行,其中匹配的行“缝合在

  • 本文向大家介绍如何在R数据帧中提取两个或多个变量的唯一组合?,包括了如何在R数据帧中提取两个或多个变量的唯一组合?的使用技巧和注意事项,需要的朋友参考一下 R数据帧可以具有大量类别变量,并且这些类别形成不同的组合。例如,变量的一个值可以与另一个变量的两个或多个值链接。同样,一个类别变量可以具有所有唯一类别。我们可以根据需要找到尽可能多的变量,并且可以通过独特的功能来完成。 示例 请看以下数据帧-

  • 问题内容: 我有一张桌子: 现在,我想使列的 用户,电子邮件,地址 唯一(在一起)。 如何在MySql中执行此操作? 当然,这个例子仅仅是……一个例子。因此,请不要担心语义。 问题答案:

  • 问题内容: 我的Android应用有很多按钮。 我的main.xml布局具有三个按钮。 我知道如何使用按钮从一个活动转到另一个活动,但是我不知道如何在一个活动上具有多个按钮,每个按钮启动的活动与另一个活动不同。 例 Main.xml Button1 Button2 Main2.xml 由button1启动 About.xml 由Button2启动 我如何使main.java文件做到这一点? 问题答

  • 问题内容: 我对数据库表中的唯一行有问题,现在可以这样做: 当我在所有列中使用UNIQUE属性时,即使第二个Moore名称不同,我也会插入第二个Moore错误:/ 如何使用UNIQUE(或INDEX?)在db表中执行类似的操作: 抱歉,如果问题很简单,但是我是sql的初学者,并且在使用UNIQUE之类的UNIQUE时找到一些好的示例时遇到问题:/或者也许我必须在插入新行之前从db中选择一个表并检查