如何防止在多个列上重复输入?
How can I prevent duplicate entries over multiple columns?
CREATE TABLE `FOLLOWERS`
(`FOLLOWER_ID` char(255) COLLATE utf8_unicode_ci NOT NULL,
`FOLLOWING_ID` char(255) COLLATE utf8_unicode_ci NOT NULL,
`FOLLOWING_IN` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP)
ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
如何防止在多列中出现重复条目?
例如,我不需要这样的东西
FOLLOWER_ID
FOLLOWING_ID
FOLLOWING_IN
283
283
...
193
283
...
908
908
...
- 第一行 = 差
- 第二 = 好
- 第三 = 不好
而且我想问一下,关注者的table设计好看吗?
如果您使用的是 MySQL 8.0.16 或更高版本,则可以使用 CHECK
约束。
CREATE TABLE `FOLLOWERS` (
`FOLLOWER_ID` char(255) COLLATE utf8_unicode_ci NOT NULL,
`FOLLOWING_ID` char(255) COLLATE utf8_unicode_ci NOT NULL,
`FOLLOWING_IN` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
CONSTRAINT CHECK (FOLLOWER_ID != FOLLOWING_ID)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
如果您使用的是旧版本,请参阅Can a MySQL trigger simulate a CHECK constraint?了解如何使用触发器模拟检查约束。
CREATE TABLE `FOLLOWERS`
(`FOLLOWER_ID` char(255) COLLATE utf8_unicode_ci NOT NULL,
`FOLLOWING_ID` char(255) COLLATE utf8_unicode_ci NOT NULL,
`FOLLOWING_IN` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP)
ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
如何防止在多列中出现重复条目?
例如,我不需要这样的东西
FOLLOWER_ID | FOLLOWING_ID | FOLLOWING_IN |
---|---|---|
283 | 283 | ... |
193 | 283 | ... |
908 | 908 | ... |
- 第一行 = 差
- 第二 = 好
- 第三 = 不好
而且我想问一下,关注者的table设计好看吗?
如果您使用的是 MySQL 8.0.16 或更高版本,则可以使用 CHECK
约束。
CREATE TABLE `FOLLOWERS` (
`FOLLOWER_ID` char(255) COLLATE utf8_unicode_ci NOT NULL,
`FOLLOWING_ID` char(255) COLLATE utf8_unicode_ci NOT NULL,
`FOLLOWING_IN` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
CONSTRAINT CHECK (FOLLOWER_ID != FOLLOWING_ID)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
如果您使用的是旧版本,请参阅Can a MySQL trigger simulate a CHECK constraint?了解如何使用触发器模拟检查约束。