mysql - 在多个表中放置唯一索引

标签 mysql

我遇到了一个问题,最简单的解决方案是添加一个跨 mysql 中多个表的唯一索引。这可能吗?

出于这个问题的目的,我将有三个表; status , trackseventsstatustracks两个表都有一个自动递增 ID( T_IDS_ID )。来自它们的信息被添加到 events 中。带触发器的表。问题在于 tracks 中可能存在相同的自动递增 ID和status ,这意味着它们在 events 中可能多次使用相同的 ID .

tracks ;

CREATE TABLE `tracks` (
`ID` int(11) NOT NULL,
`url` varchar(200) COLLATE latin1_general_ci NOT NULL,
`name` varchar(100) COLLATE latin1_general_ci NOT NULL,
`timestamp` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' ON UPDATE CURRENT_TIMESTAMP,
`T_ID` int(11) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`T_ID`),
UNIQUE KEY `url` (`url`),
UNIQUE KEY `T_ID` (`T_ID`),
KEY `ID` (`ID`),
CONSTRAINT `tracks_ibfk_1` FOREIGN KEY (`ID`) REFERENCES `members` (`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci

status

CREATE TABLE `status` (
`ID` int(11) NOT NULL,
`status` varchar(300) COLLATE latin1_general_ci NOT NULL,
`timestamp` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' ON UPDATE CURRENT_TIMESTAMP,
`S_ID` int(11) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`S_ID`),
UNIQUE KEY `S_ID` (`S_ID`),
KEY `ID` (`ID`),
CONSTRAINT `status_ibfk_1` FOREIGN KEY (`ID`) REFERENCES `artists` (`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci

events

CREATE TABLE `events` (
`ID` int(11) NOT NULL,
`action` varchar(100) COLLATE latin1_general_ci NOT NULL,
`timestamp` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' ON UPDATE CURRENT_TIMESTAMP,
`E_ID` int(11) NOT NULL,
KEY `ID` (`ID`),
CONSTRAINT `events_ibfk_1` FOREIGN KEY (`ID`) REFERENCES `members` (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci COMMENT='This table shows what the artist has done and is used feed'

最佳答案

同意,您不能在多个表之间建立索引。

但是,请考虑通过向事件表添加“源”列并对源和外键的组合设置唯一约束来更改架构。这将防止从同一源插入重复的键。

关于mysql - 在多个表中放置唯一索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12227835/

相关文章:

php - 文件上传代码不起作用

mysql - 在 MySQL 中,是否可以将变量的值命名为列?

php - 连接到 ubuntu 服务器中的 mysql 数据库

php - 带播放列表的视频数据库的数据库设计

php - 从多个选择列表(html 格式)向 mysql 数据库插入数据

php - 显示内部连接表在 1 列中有不同的值

php - 自动刷新表而不刷新页面 PHP MySQL

java - 当主键自动递增时,如何使用 JPA (EclipseLink) 从数据库中获取特定的 "row"?

mysql - MySql 中的奇怪行为

mysql - Chef Recipe 将值添加到 mysql 表