КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Возможности реиндексации в БД
План: Типы БД, для которых может понадобиться реиндексация Возможности реиндексации: - Изменения типа ключевого поля в сторону увеличения разрядности - Алгоритм реиндексации, представленный ниже на примере двух связанных таблиц Справочник должностей и Справочник учителей: 1) проверить наличие потерянных записей в подчиненной таблице 2) проверить наличие каскадного обновления у связи или сделать его 3) во временную таблицу переместить список отсортированных ключей 4) в цикле заменить старое значение ключа на новое
--Создание тестовой БД create database db_teachers use db_teachers
create table sppost(idpost int primary key, postname char(30))
--возможные варианты создания связанной таблицы --с соединением create table spteachers(idteacher int primary key identity (1,1), idpost int Foreign key references sppost(idpost), FIO char(30))
--с соединением и каскадным обновлением create table spteachers(idteacher int primary key identity (1,1), idpost int Foreign key references sppost(idpost) On update cascade, FIO char(30))
--без соединения create table spteachers(idteacher int primary key identity (1,1), idpost int, FIO char(30))
--ввод тетовых данных insert into sppost(idpost, postname)Values(20, 'матем') insert into sppost(idpost, postname)Values(10, 'физика') insert into sppost(idpost, postname)Values(30, 'литер') insert into sppost(idpost, postname)Values(15, 'черчение') insert into sppost(idpost, postname)Values(16, 'механика') insert into sppost(idpost, postname)Values(17, 'БД')
insert into spteachers(idpost, FIO)Values(20, 'Иванов') insert into spteachers(idpost, FIO)Values(10, 'Петров') insert into spteachers(idpost, FIO)Values(10, 'Сидоров') insert into spteachers(idpost, FIO)Values(18, 'Федоров') insert into spteachers(idpost, FIO)Values(16, 'Капин') insert into spteachers(idpost, FIO)Values(16, 'Сорин')
--просмотр данных на предмет потерянных записей --select * from spteachers left join sppost on spteachers.idpost=sppost.idpost
--удаление потерянных записей --delete from spteachers where not exists(select * from sppost where spteachers.idpost=sppost.idpost)
--изменение связи alter table spteachers drop constraint fk_teac_post alter table spteachers add constraint fk_teac_post foreign key (idpost) references sppost(idpost) on update cascade
--создание временной таблицы Declare @temp0 table(idpost int) insert into @temp0 select idpost from sppost order by idpost asc declare temp1 scroll cursor for (select idpost from @temp0) open temp1 declare @i int, @id int set @i = 0
--реиндексация WHILE @@FETCH_STATUS = 0 BEGIN FETCH NEXT FROM temp1 into @id set @i = @i+1 update sppost set idpost = @i where idpost = @id END close temp1 DEALLOCATE temp1
--просмотр результата select * from sppost select * from spteachers left join sppost on spteachers.idpost=sppost.idpost
Дата добавления: 2014-01-04; Просмотров: 394; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |