如何声明约束,使两列在任何行中不能具有相同的值。
例如,给定
create table `presents` (
`from` varchar(255) NOT NULL,
`to` varchar(255) NOT NULL
)
我想确保没有人给自己送礼物。
'alice', 'bob' # OK
'bob', 'charlie' # OK
'bob', 'alice' # OK
'bob', 'alice' # OK again
'bob', 'bob' # Fails
发布于 2019-06-03 06:51:33
create table `presents` (
`from` varchar(255) NOT NULL,
`to` varchar(255) NOT NULL,
CHECK(from<>to)
)
发布于 2019-06-03 06:43:14
这里有一个想法:
DROP TABLE IF EXISTS my_table;
CREATE TABLE my_table (id SERIAL PRIMARY KEY, `from` INT NOT NULL, `to` INT NOT NULL);
INSERT INTO my_table (`from`,`to`) SELECT 1,2 FROM (SELECT 1) x WHERE 1 <> 2;
INSERT INTO my_table (`from`,`to`) SELECT 1,1 FROM (SELECT 1) x WHERE 1 <> 1;
SELECT * FROM my_table;
+----+------+----+
| id | from | to |
+----+------+----+
| 1 | 1 | 2 |
+----+------+----+
https://stackoverflow.com/questions/56419435
复制相似问题