如何修复 SQL 错误“需要符号名称”

问题描述 投票:0回答:1

我目前正在 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`)

任何有关此问题的帮助将不胜感激。

sql mysql constraints
1个回答
0
投票

MySQL 没有名为

REGEX
的运算符。

有一个操作员

REGEXP
。末尾的
P
为必填项。

参见:https://dev.mysql.com/doc/refman/8.0/en/regexp.html#operator_regexp

我测试了在更正此错误后创建您显示的表格,并且它可以正常工作。

演示:https://dbfiddle.uk/A0QVuhUH

© www.soinside.com 2019 - 2024. All rights reserved.