Convertir un champs de type identity en un integer  Aéronautique  Astronomie  Géologie  Météorologie  Végétaux
 Animaux  Biologie Santé  Informatique  Paléontologie  
 Archéologie  Chimie  Mathématiques  Physique  

// - le but est de modifier les champs identity et numeric en integer

// - la table d'origine est renommé

sp_rename 'telephone','telephone3';

// - création de la table intermédiare telephonne4. Uniquement avec les champs à modifier

create table telephone4
(
ref integer not null,
old_ref numeric(18,0) null
)
;


// - insertion des donnees dans la table telephone4 à partir de telephone3. On crée un champ old_ref
// avec les valeurs de ref. Et un champs ref avec 0 car il doit être non null

insert into telephone4
(
ref,
old_ref
)

select
0,
ref

From telephone3
;

// - même opération sur la table Reservation. Pour cette table, il y a deux champs à mettre à jour

sp_rename 'Reservation','Reservation3';


create table Reservation4
(
NoReservation integer not null,
old_NoReservation numeric(18,0) null,

NoPersonne integer null,
old_NoPersonne numeric(18,0) null
)
;

insert into Reservation4
(
NoReservation,
old_NoReservation,

NoPersonne,
old_NoPersonne
)

select
0,
NoReservation,

0,
NoPersonne

From Reservation3
;


// - Mise à jour des champs
// - 5000002560 ---> 5000002560 ---> 0652000005 ---> 065200 ---> 002560 ---> 2560 ---> 12560
// - numeric ---> charactere ---> inversée ---> -5 caracteres ---> inversée ---> entier ---> +10000
// - convert reverse substring reverse convert +

// - des écarts sont pris pour éviter les doublons ex : 500002560 et 1000002560 ---> 12560 et 22560

update telephone4
set ref = old_ref
where old_ref<500000000000000 ;

update telephone4
set ref = 10000+convert(int,reverse(substring(reverse(convert(varchar(20),old_ref)),1,5)))
where old_ref>500000000000000 AND old_ref <600000000000000 ;

update telephone4
set ref = 20000+convert(int,reverse(substring(reverse(convert(varchar(20),old_ref)),1,5)))
where old_ref>1000000000000000 AND old_ref <1100000000000000 ;


update Reservation4
set NoReservation = old_NoReservation
where old_NoReservation<500000000000000 ;

update Reservation4
set NoReservation = 10000+convert(int,reverse(substring(reverse(convert(varchar(20),old_NoReservation)),1,5)))
where old_NoReservation>500000000000000 AND old_NoReservation <600000000000000 ;

update Reservation4
set NoReservation = 20000+convert(int,reverse(substring(reverse(convert(varchar(20),old_NoReservation)),1,5)))
where old_NoReservation>1000000000000000 AND old_NoReservation <1100000000000000 ;

update Reservation4
set NoReservation = 30000+convert(int,reverse(substring(reverse(convert(varchar(20),old_NoReservation)),1,5)))
where old_NoReservation>1500000000000000 AND old_NoReservation <1600000000000000 ;

// - Mise à jour du champs Nopersonne à partir des champs de la table intermediaire. On fait une correspondance exacte
// entre la nouvelle clée et l'ancienne


update Reservation4
set NoPersonne = ref
from dbo.telephone4
where old_NoPersonne = old_ref
;

// - creation de la table telephone finale

create table telephone
(ref integer not null,
entite varchar(50) null,
nom varchar(30) null,
prenom varchar(30) null,
ligne_directe varchar(15) null,
emploi varchar(100) null,
site varchar(30) null,
etage varchar(10) null,
bureau varchar(10) null,
poste varchar(10) null,
fax varchar(15) null,
email varchar(100) null,
insee varchar(25) null,
jours varchar(4) null,
mois varchar(4) null,
annees varchar(5) null,
photo varchar(50) null,
offre_poste_saisi varchar(2) null,
offre_posts_val varchar(2) null,
login varchar(30) null,
code_adres numeric(5,0) null,
sup2 numeric(18,0) null,
mobile varchar(15) null
)
;

insert into telephone
(ref,
entite,
nom,
prenom,
ligne_directe,
emploi,
site,
etage,
bureau,
poste,
fax,
email,
insee,
jours,
mois,
annees,
photo,
offre_poste_saisi,
offre_posts_val,
login,
code_adres,
sup2,
mobile
)

select
telephone4.ref,
telephone3.entite,
telephone3.nom,
telephone3.prenom,
telephone3.ligne_directe,
telephone3.emploi,
telephone3.site,
telephone3.etage,
telephone3.bureau,
telephone3.poste,
telephone3.fax,
telephone3.email,
telephone3.insee,
telephone3.jours,
telephone3.mois,
telephone3.annees,
telephone3.photo,
telephone3.offre_poste_saisi,
telephone3.offre_posts_val,
telephone3.login,
telephone3.code_adres,
telephone3.sup2,
telephone3.mobile

From telephone3, telephone4

where telephone4.old_ref = telephone3.ref
;

alter table telephone
add constraint ref primary key nonclustered
(ref) ;

// - creation de la table telephone finale

create table Reservation
(NoReservation integer not null,
NoSalle char(4) null,
DateDebut smalldatetime null,
DateFin smalldatetime null,
NoPersonne integer null,
Theme varchar(200) null,
Nbparticip varchar(4) null,
Nbjours varchar(4) null,
Projecteur varchar(3) null,
Television varchar(3) null,
Retropro varchar(3) null,
Paperboard varchar(3) null,
Camescope varchar(3) null,
Informatique varchar(3) null,
Nbinforma varchar(4) null,
Demande varchar(200) null,
Validation varchar(15) null,
DateEnr smalldatetime null,
dodp varchar(10) null,
Nbintervenant varchar(4) null,
dispo varchar(10) null,
eau varchar(3) null,
white_paper varchar(3) null,
magnetoscope varchar(3) null,
markerpb varchar(3) null,
markerwp varchar(3) null,
fblanches varchar(3) null,
ksept varchar(3) null,
crayons varchar(3) null,
ecran varchar(3) null,
rallonge varchar(3) null,
reseau varchar(3) null,
internet varchar(3) null,
imprimante varchar(3) null,
application varchar(3) null,
cafet varchar(3) null,
pot varchar(3) null,
remarque_tables varchar(200) null,
remarques_info varchar(200) null,
remarque_materiel varchar(200) null) ;

insert into Reservation
(NoReservation,
NoSalle,
DateDebut,
DateFin,
NoPersonne,
Theme,
Nbparticip,
Nbjours,
Projecteur,
Television,
Retropro,
Paperboard,
Camescope,
Informatique,
Nbinforma,
Demande,
Validation,
DateEnr,
dodp,
Nbintervenant,
dispo,
eau,
white_paper,
magnetoscope,
markerpb,
markerwp,
fblanches,
ksept,
crayons,
ecran,
rallonge,
reseau,
internet,
imprimante,
application,
cafet,
pot,
remarque_tables,
remarques_info,
remarque_materiel)

select
Reservation4.NoReservation,
Reservation3.NoSalle,
Reservation3.DateDebut,
Reservation3.DateFin,
Reservation4.NoPersonne,
Reservation3.Theme,
Reservation3.Nbparticip,
Reservation3.Nbjours,
Reservation3.Projecteur,
Reservation3.Television,
Reservation3.Retropro,
Reservation3.Paperboard,
Reservation3.Camescope,
Reservation3.Informatique,
Reservation3.Nbinforma,
Reservation3.Demande,
Reservation3.Validation,
Reservation3.DateEnr,
Reservation3.dodp,
Reservation3.Nbintervenant,
Reservation3.dispo,
Reservation3.eau,
Reservation3.white_paper,
Reservation3.magnetoscope,
Reservation3.markerpb,
Reservation3.markerwp,
Reservation3.fblanches,
Reservation3.ksept,
Reservation3.crayons,
Reservation3.ecran,
Reservation3.rallonge,
Reservation3.reseau,
Reservation3.internet,
Reservation3.imprimante,
Reservation3.application,
Reservation3.cafet,
Reservation3.pot,
Reservation3.remarque_tables,
Reservation3.remarques_info,
Reservation3.remarque_materiel

From Reservation4, Reservation3
where Reservation4.old_NoReservation = Reservation3.NoReservation
;

update Reservation
set NoPersonne = 20978
where NoPersonne = 0
;


alter table Reservation
add constraint Noreserv_ID primary key nonclustered
(NoReservation) ;

Hit-Parade