Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL如何使用check?_Mysql - Fatal编程技术网

MySQL如何使用check?

MySQL如何使用check?,mysql,Mysql,我是MYSQL的初学者,我正在尝试使用CHECKforEmployeeID的格式是E###其中“#”是数字(int)。而DOB即eNEERD应从当前日期算起应为16年或更久。这是表格的代码。谢谢你的帮助 Create table Employee( EmployeeID varchar(200) not null primary key, DOB date, ##Check (DOB <= CURRENT_DATE - interval '16' year), FirstName va

我是MYSQL的初学者,我正在尝试使用
CHECK
for
EmployeeID
的格式是
E###
其中“#”是数字(int)。而
DOB
即eNEERD应从当前日期算起应为16年或更久。这是表格的代码。谢谢你的帮助

Create table Employee(
EmployeeID varchar(200) not null primary key,
DOB date, 

##Check (DOB <= CURRENT_DATE - interval '16' year),
FirstName varchar(200),
MiddleName varchar(200),
LastName varchar(200),
Address varchar(255),
StartDate date,
Gender varchar(100)
);
createtableemployee(
EmployeeID varchar(200)非空主键,
DOB日期,

##Check(DOB我将使用正则表达式来确认EmployeeID的有效性,例如:-

EmployeeID varchar(200)非空主键检查EmployeeID REGEXP'E\d{3}',

但是,如果它总是以“E”开头,是否需要存储“E”?能否只存储整数,然后再添加E?整数主键更简单、更快、更小、更健壮

使用a提供带有E的ID

create table Employee (
  -- No check required, it's an integer by definition.
  -- Takes less storage to store and index.
  ID integer primary key,

  -- A generated virtual column (takes no storage space)
  EmployeeID varchar(255) as (concat('E', id)) virtual
);

insert into Employee (id) values (1), (23), (456);

select * from Employee;

ID      EmployeeID
1       E1
23      E23
456     E456

select * from Employee where EmployeeID = 'E456';

ID      EmployeeID
456     E456

.

您使用的MySQL版本是什么?TimBiegeleisen它是8.0.20。您不能使用检查约束来检查出生日期列,您必须使用触发器。@TimBiegeleisen您能告诉我怎么做吗?出生日期呢?@TimBiegeleisen您的答案很好。