как применить ограничение с помощью хранимых процедур, что идентификатор должен начинаться с 'E' и иметь 2 цифры впереди? - PullRequest
0 голосов
/ 10 июля 2020

EID следует вставлять только в том случае, если он начинается с 'E' и имеет 2 цифры впереди .... Я пытался написать процедуру для такой цели, как:

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

здесь проблема заключается в том, что -- или пробелы будут вставлять нечисловые числа, также здесь этот код также включает несколько дополнительных * просто домашних заданий :)

1 Ответ

1 голос
/ 10 июля 2020

Зачем вам писать хранимую процедуру? 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}$')
...