1. Qu’un différentiel n’est pas en même temps sur deux essieux ;
2. Qu’un essieu n’héberge pas en même temps deux différentiels ;
3. Que le type d’un essieu et celui du différentiel hébergé sont les mêmes ;
4. Que le manufacturier d’un essieu et le manufacturier du différentiel hébergé sont le même.
BEGIN TRANSACTION ;
DELETE FROM DIFFERENTIAL WHERE DiffSerialNumber = 'diffFront16156' ;
SELECT * FROM DIFFERENTIAL ;
INSERT INTO DIFFERENTIAL_COMPOSANT_V (NumeroSerie, DateAchat, Fabriquant, Modele
, DiffType, Ratio, GVWR, Torque, Lock, PDLock, Serie)
SELECT 'diffFront16156', (SELECT DateAchat FROM AXLE_COMPOSANT_V WHERE NumeroSerie = 'FRONT16156'), 'Meritor', 'DIFF 40'
, 'rear', 374, 2000, 1000, 'Y', 'N', 'Meritor série 1'
;
-------------------------------------------------
-- on oublie de fournir le numéro de l'essieu
-------------------------------------------------
INSERT INTO DIFF_AFFECTATION_AXLE (DiffSerialNumber)
SELECT 'diffFront16156'
;
---------------------------------------------------
-- on oublie de fournir le numéro du différentiel
---------------------------------------------------
INSERT INTO DIFF_AFFECTATION_AXLE (AxleSerialNumber)
SELECT 'FRONT16156'
;
---------------------------------------------------
-- différentiel : numéro de série inconnu
---------------------------------------------------
INSERT INTO DIFF_AFFECTATION_AXLE (DiffSerialNumber, AxleSerialNumber)
SELECT 'diffFront16156$', 'FRONT16156'
;
---------------------------------------------------
-- essieu : numéro de série inconnu
---------------------------------------------------
INSERT INTO DIFF_AFFECTATION_AXLE (DiffSerialNumber, AxleSerialNumber)
SELECT 'diffFront16156', 'FRONT16156$'
;
--------------------------------------------------------------
-- différentiel et essieu connus et de type non compatible
--------------------------------------------------------------
INSERT INTO DIFF_AFFECTATION_AXLE (DiffSerialNumber, AxleSerialNumber)
SELECT 'diffFront16156', 'FRONT16156'
;
--------------------------------------------------------------
-- différentiel et essieu connus et de type non compatible :
-- on corrige le type du différentiel
--------------------------------------------------------------
UPDATE DIFFERENTIAL SET DiffType = 'front' WHERE DiffSerialNumber = 'diffFront16156'
---------------------------------------
-- 2e essai ! ça devrait être bon
----------------------------------------
INSERT INTO DIFF_AFFECTATION_AXLE (DiffSerialNumber, AxleSerialNumber)
SELECT 'diffFront16156', 'FRONT16156'
;
-----------------------------------------------------------------------
--Le différentiel et l'essieu sont connus et de type compatible,
-- le fabriquant n'est pas celui de l'essieu
-- on corrige le fabriquant du différentiel
-----------------------------------------------------------------------
UPDATE DIFFERENTIAL_COMPOSANT_V SET Fabriquant = 'fsmrel' WHERE NumeroSerie = 'diffFront16156'
---------------------------------------------
-- nouvel essai ! ça devrait être bon
---------------------------------------------
INSERT INTO DIFF_AFFECTATION_AXLE (DiffSerialNumber, AxleSerialNumber)
SELECT 'diffFront16156', 'FRONT16156'
;
--------------------------------------------------------------
-- test bilocation : 2 différentiels sur le même essieu
--------------------------------------------------------------
-- diffFront16156 désinstallé le 2018-12-10
UPDATE DIFF_AXLE set DiffDesInstalDate = '2018-12-10' WHERE DiffId = (SELECT DiffId FROM DIFFERENTIAL WHERE DiffSerialNumber = 'diffFront16156')
-- diffFront16156 : correctif du manufacturier
UPDATE DIFFERENTIAL_COMPOSANT_V SET Fabriquant = 'fsmrel' WHERE NumeroSerie = 'diffforward16156'
-- diffforward16156 : devient du type front
UPDATE DIFFERENTIAL SET DiffType = 'front' WHERE DiffSerialNumber = 'diffforward16156'
-- diffforward16156 et diffFront16156 ne doivent pas être sur le même essieu en même temps
INSERT INTO DIFF_AFFECTATION_AXLE (DiffSerialNumber, AxleSerialNumber, InstallDate, DesinstallDate)
SELECT 'diffforward16156', 'FRONT16156', '2018-11-09', '9999-12-31'
-- diffforward16156 et diffFront16156 peuvent se succéder sur le même essieu
INSERT INTO DIFF_AFFECTATION_AXLE (DiffSerialNumber, AxleSerialNumber, InstallDate, DesinstallDate)
SELECT 'diffforward16156', 'FRONT16156', '2018-12-10', '9999-12-31'
;
INSERT INTO DIFF_AFFECTATION_AXLE (DiffSerialNumber, AxleSerialNumber, InstallDate, DesinstallDate)
SELECT 'diffFront16156', 'FRONT14426', '2018-12-01', '2018-12-03'
;
---------------------------------------------
-- un coup d'oeil en passant
--------------------------------------------
SELECT '' AS DIFF_AXLE, * FROM DIFF_AXLE AS x JOIN DIFFERENTIAL AS y ON x.DiffId = y.DiffId
JOIN AXLE AS z ON x.AxleId = z.ComposantId
---------------------------------------------------------------------------------------------
-- pour test date instal et désinstal = '9999-12-31' (tentative diff sur 2 essieux à la fois)
---------------------------------------------------------------------------------------------
INSERT INTO AXLE_COMPOSANT_V (NumeroSerie, Fabriquant, Modele, AxleType, GAWR)
SELECT 'FRONT1615699', 'FSMREL', 'modèle fr16'
, 'FRONT', 16000
;
SELECT '' AS 'voir FRONT1615699', * FROM AXLE_COMPOSANT_V WHERE NumeroSerie = 'FRONT1615699'
INSERT INTO DIFF_AFFECTATION_AXLE (DiffSerialNumber, AxleSerialNumber)
SELECT 'diffFront16156', 'FRONT1615699'
----------------------------------------------
-- un coup d'oeil
----------------------------------------------
SELECT '' AS DIFF_AXLE, * FROM DIFF_AXLE AS x JOIN DIFFERENTIAL AS y ON x.DiffId = y.DiffId
JOIN AXLE AS z ON x.AxleId = z.ComposantId
-------------------------------------------------------------------------
-- le précédent est installé pour la période '9999-12-31', '9999-12-31'
-------------------------------------------------------------------------
INSERT INTO AXLE_COMPOSANT_V (NumeroSerie, Fabriquant, Modele, AxleType, GAWR)
SELECT 'FRONT161569988', 'FSMREL', 'modèle fr16'
, 'FRONT', 16000
;
----------------------------------------------
-- un coup d'oeil
----------------------------------------------
SELECT '' AS 'voir FRONT161569988', * FROM AXLE_COMPOSANT_V WHERE NumeroSerie = 'FRONT161569988'
INSERT INTO DIFF_AFFECTATION_AXLE (DiffSerialNumber, AxleSerialNumber, InstallDate)
SELECT 'diffFront16156', 'FRONT161569988', '9999-12-31'
----------------------------------------------
-- un coup d'oeil
----------------------------------------------
SELECT '' AS DIFF_AXLE, DiffSerialNumber, AxleSerialNumber, DiffInstalDate, DiffDesInstalDate
FROM DIFF_AXLE AS x JOIN DIFFERENTIAL AS y ON x.DiffId = y.DiffId jOIN AXLE AS z ON x.AxleId = z.ComposantId
ROLLBACK ;