mysql - 在列上创建具有多个检查约束的表
问题描述
我试图在“网络”列上创建一个新的“机器”表;它不能为空,并且必须是三个不同字符串中的任何一个。我是 SQL 及其语法的新手,并且正在使用 mysql 5.7
DROP TABLE IF EXISTS `machines`;
CREATE TABLE `machines` (
`id` int(11) NOT NULL,
`hostname` varchar(255),
`ip_address` varchar(15),
`network` varchar(255) NOT NULL,
CONSTRAINT CHK_network CHECK (network = 'INTERNAL' OR 'EXTERNAL' OR 'OTHER'),
PRIMARY KEY (`id`)
);
INSERT INTO `machines`
VALUES
(1, 'host1', '123.123.123.1', 'EXTERNAL'),
(2, 'host2', '192.168.0.1', 'EXTERNAL' ),
(3, 'host3', '192.168.0.2', ' ' );
我希望空格不会进入第三行,但确实如此。
解决方案
像这样定义你的约束:
CONSTRAINT CHK_network CHECK (network IN ('INTERNAL', 'EXTERNAL', 'OTHER'))
推荐阅读
- asp.net-mvc - ASP.NET 引导导航栏样式
- jquery - 希望 youtube 视频在悬停时播放,但也不在暂停时显示建议的视频
- r - 在闪亮中为 checkboxGroupInput() 使用一组动态选择
- amp-html - 'amp-fit-text' 中的 'min-font-size' 属性在 'amp-list' 块内不起作用
- php - MySQL PHP 列更新查询
- c - 如何仅使用
图书馆 - java - 如何在休眠中使用一对一/零映射
- javascript - 一次搜索后搜索栏不显示表格
- swift - Swift 在 addAttribute 中设置当前字体
- python - tensorflow 不满足 Numpy 版本