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 | ... |
- 第一行 = 壞
- 第二 = 好
- 第三=壞
我想問一下,追隨者的桌子看起來設計得很好嗎?
uj5u.com熱心網友回復:
如果您使用的是 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
如果您使用的是舊版本,請參閱MySQL 觸發器可以模擬 CHECK 約束嗎?了解如何使用觸發器模擬檢查約束。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/482782.html
