我目前正在 phpmyadmin 中处理数据库。我正在尝试在客户表中添加约束,以确保输入的任何电话号码都必须以 0 开头,后跟 10 或 11 位数字。
当我尝试添加约束时,我的问题出现了。这是我尝试过的(在添加我的唯一键后,我在创建表时添加了这一行。(见下文)):
CONSTRAINT `cust_pnum_check`
CHECK(`Phone_Number` REGEX '^0\d{10}|\d{11}$')
当我输入此内容时,
CHECK
带有下划线,并显示一条消息:“需要符号名称!保留关键字不能用作没有反引号的列名称(靠近CHECK)”。
我知道,当尝试使用保留关键字作为列名而不用反引号将其括起来时,通常会发生这种情况,但我不确定我在哪里这样做了。
供参考,这是客户表:
CREATE TABLE IF NOT EXISTS `customer` (
`Customer_ID` int(10) NOT NULL AUTO_INCREMENT,
`First_Name` varchar(30) NOT NULL,
`Last_Name` varchar(30) NOT NULL,
`Contact_Email` varchar(60) NOT NULL,
`Phone_Number` varchar(11) NOT NULL,
`Home_Address` varchar(60) NOT NULL,
`Postcode` varchar(10) NOT NULL,
`Cust_Username` varchar(30) NOT NULL,
`Cust_Password` varchar(60) NOT NULL,
PRIMARY KEY(`Customer_ID`),
UNIQUE KEY `Contact_Email` (`Contact_Email`),
UNIQUE KEY `Cust_username` (`Cust_Username`)
任何有关此问题的帮助将不胜感激。
MySQL 没有名为
REGEX
的运算符。
有一个操作员
REGEXP
。末尾的 P
为必填项。
参见:https://dev.mysql.com/doc/refman/8.0/en/regexp.html#operator_regexp
我测试了在更正此错误后创建您显示的表格,并且它可以正常工作。