автоинкрементный буквенно-цифровой идентификатор для таблицы на основе уникального идентификатора другой таблицы - PullRequest
1 голос
/ 01 марта 2012

Я хочу сгенерировать уникальный идентификатор для студента на основе отделения студента.Я хочу, чтобы идентификатор студента был CS0448, когда идентификатор отдела CS, и IT0448 для идентификатора отдела IT и т. Д. И эти идентификаторы должны увеличиваться на 1.

Я думал, что у меня будет другой идентификатор и автоматически увеличит его на 1для каждого учащегося добавьте и объедините его с идентификатором отдела, но это мне не поможет. Это приведет к тому, что для учащегося в области информационных технологий рядом с CS0448 будет указано значение IT0449.Пожалуйста, помогите мне с этим.видите это ... должно быть что-то вроде этого ..

...
cs0439
it0441
cs0440
it0442
cs0441
cs0442

Пожалуйста, дайте мне знать лучшие варианты для буквенно-цифровой идентификации

Ответы [ 2 ]

2 голосов
/ 01 марта 2012

Вы можете попробовать триггер INSTEAD OF INSERT, например:

create table students(id varchar(10) primary key not null, Department varchar(2), Name varchar(80))
go

create trigger students_insert_PK
    on students
    INSTEAD OF INSERT
as
    declare @id int;
    declare @dept varchar(2); select @dept=Department from INSERTED;
    select @id=cast(max(right(id,4)) as int) from students where Department=@dept;
    set @id=isnull(@id,0)+1;

    insert into students
    select Department+right('0000'+cast(@id as varchar(4)),4)
    , Department
    , name
    from INSERTED;
go

insert into students (Department,Name) values ('CS','John');
insert into students (Department,Name) values ('CS','Pat');
insert into students (Department,Name) values ('CS','Sheryl');
insert into students (Department,Name) values ('IT','Phil');
insert into students (Department,Name) values ('EE','Frank');
insert into students (Department,Name) values ('EE','Amy');
insert into students (Department,Name) values ('EE','Stu');
go

select * from students;
go

Результаты:

enter image description here

2 голосов
/ 01 марта 2012

Вы можете использовать триггер ДО вставки , который изменяет значение идентификатора в соответствии с вашей логикой.

По сути, вы бы сделали обычный выбор, чтобы получить следующий идентификатор и тип (IT или CS), который у вас уже был бы у меня (я думаю).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...