首页 > 解决方案 > 如何通过存储过程应用约束,ID 应该以“E”开头并且后面有 2 个数字?

问题描述

EID仅当它以 2 个数字开头并且后面有 2 个数字时才应插入'E'.... 我试图为此目的编写一个程序:

create proc emp_checks(@eid varchar(20), @name varchar(20),@age int, @salary int, @city varchar(20))
AS
Begin
Declare @citycount int= (select count(*) from employee where @city=city)

if (@citycount < 2 and @eid like 'E--%')
insert into employee values(@eid,@name,@age,@salary,@city)
else 
print 'city exceeded'
End

这里的问题是--或者空格会插入非数字也在这里这个代码还包括一些额外的*只是家庭作业:)

标签: mysqlsqlstored-proceduresprocedure

解决方案


为什么要写存储过程?MySQL 现在支持check约束:

alter table employee add constraint chk_employee_eid
    check (eid regexp '^E[0-9]{2}')

请注意,这允许前 3 个字符之后的任何内容。如果您不想要任何东西,请添加$到模式中:

alter table employee add constraint chk_employee_eid
    check (eid regexp '^E[0-9]{2}$')

推荐阅读