All pastes #435177 Raw Edit

TP2Tests

public sql v1 · immutable
·published 2007-04-11 20:31 UTC
rendered paste body
CLEAR SCREEN;alter session set nls_date_format = 'dd/mm/yyyy';SET ECHO ON;SPOOL TEST.out;------------------------------- DEBUT DES TESTS ----------------------------------------------------------------------- TESTS BIBLIOTHEQUES -------------------------------------- PK_BIBLIOTHEQUES_01 PRIMARY KEYINSERT INTO Bibliotheques VALUES(NULL,'éducation');INSERT INTO Bibliotheques VALUES(999,'juridique');INSERT INTO Bibliotheques VALUES(999,'arts');ROLLBACK;---- CK_BIBLIOTHEQUES_02INSERT INTO Bibliotheques VALUES(333,'maisonneu');INSERT INTO Bibliotheques VALUES(222,'SCIENCES!');ROLLBACK;---- UN_BIBLIOTHEQUES_03INSERT INTO Bibliotheques VALUES(111,'éducation');INSERT INTO Bibliotheques VALUES(123,'éducation');ROLLBACK;---- NN_BIBLIOTHEQUES_04INSERT INTO Bibliotheques VALUES(444,NULL);INSERT INTO Bibliotheques VALUES(555,NULL);ROLLBACK;-------------------------------- TESTS AUTEURS -------------------------------------------- PK_AUTEURS_01INSERT INTO Auteurs VALUES(NULL,'UnNom','UnPrenom');INSERT INTO Auteurs VALUES(12345, 'unAutre','lalala');INSERT INTO Auteurs VALUES(12345, 'bar','foo');ROLLBACK;---- NN_AUTEURS_02INSERT INTO Auteurs VALUES(31245,NULL,'foobar');ROLLBACK;---- NN_AUTEURS_03INSERT INTO Auteurs VALUES(54312,'foobar',NULL);ROLLBACK;---- UN_AUTEURS_04INSERT INTO Auteurs VALUES(55555,'foo','bar');INSERT INTO Auteurs VALUES(99999,'foo','bar');ROLLBACK;-------------------------------- TESTS OEUVRES -------------------------------------------- PK_OEUVRES_01 PRIMARY KEYINSERT INTO Oeuvres VALUES(NULL,'UN PREMIER TITRE',1);INSERT INTO Oeuvres VALUES(999999,'UN TITRE',1);INSERT INTO Oeuvres VALUES(999999,'UN AUTRE TITRE',1);ROLLBACK;---- NN_OEUVRES_02 NOT NULLINSERT INTO Oeuvres VALUES(999999,NULL,1);ROLLBACK;---- FK_OEUVRES_03 REFERENCES AuteursINSERT INTO Oeuvres VALUES(999999,'UN TITRE INCONNU!',98765);ROLLBACK;---- NN_OEUVRES_04 NOT NULLINSERT INTO Oeuvres VALUES(999999,'UN TITRE',NULL);ROLLBACK;---- UN_OEUVRES_05 UNIQUE(titreOeuvre, noAuteur)INSERT INTO Oeuvres VALUES(999999, 'un titre générique',1);INSERT INTO Oeuvres VALUES(888888, 'un titre générique',1);ROLLBACK;-------------------------------- TESTS EXEMPLAIRES ---------------------------------------- FK_EXEMPLAIRES_01 REFERENCES BibliothequesINSERT INTO Exemplaires VALUES(333,567,1);ROLLBACK;---- FK_EXEMPLAIRES_02 REFERENCES OEUVRESINSERT INTO Exemplaires VALUES(221,1,999999);ROLLBACK;---- PK_EXEMPLAIRES_03 PRIMARY KEY(noBiblio, noExemplaire, noOeuvre)INSERT INTO Exemplaires VALUES(555,1,1);INSERT INTO Exemplaires VALUES(555,1,1);INSERT INTO Exemplaires VALUES(NULL,1,1);INSERT INTO Exemplaires VALUES(666,NULL,1);INSERT INTO Exemplaires VALUES(666,1,NULL);ROLLBACK;----------- TESTS -------------- CATEGORIEUTILISATEURS ---------------------------------- PK_CATEGORIEUTILISATEURS_01 PRIMARY KEYINSERT INTO CategorieUtilisateurs VALUES(999,'professeur',1,1,1);INSERT INTO CategorieUtilisateurs VALUES(999,'professeur',2,2,2);INSERT INTO CategorieUtilisateurs VALUES(NULL,'étudiant',1,1,1);ROLLBACK;-- UN_CATEGORIEUTILISATEURS_02 UNIQUEINSERT INTO CategorieUtilisateurs VALUES(999,'étudiant',1,1,1);ROLLBACK;-- NN_CATEGORIEUTILISATEURS_03 NOT NULLINSERT INTO CategorieUtilisateurs VALUES(999,NULL,1,1,1);ROLLBACK;-- CH_CATEGORIEUTILISATEURS_04 CHECK(nomCategorie IN ('étudiant','chercheur','professeur'))INSERT INTO CategorieUtilisateurs VALUES(999,'HAHAHA',1,1,1);INSERT INTO CategorieUtilisateurs VALUES(998,'FOOBAR',1,1,1);ROLLBACK;-- NN_CATEGORIEUTILISATEURS_05 NOT NULLINSERT INTO CategorieUtilisateurs VALUES(999,'professeur',NULL,1,1);ROLLBACK;-- CK_CATEGORIEUTILISATEURS_06 CHECK(dureePret>=0)INSERT INTO CategorieUtilisateurs VALUES(999,'professeur',-3,1,1);ROLLBACK;-- CK_CATEGORIEUTILISATEURS_07 CHECK(penaliteParJour >= 0)INSERT INTO CategorieUtilisateurs VALUES(999,'professeur',1,-3,1);ROLLBACK;-- NN_CATEGORIEUTILISATEURS_08 NOT NULLINSERT INTO CategorieUtilisateurs VALUES(999,'professeur',1,NULL,1);ROLLBACK;-- CK_CATEGORIEUTILISATEURS_09 CHECK(nbMaxExemplaires > 0)INSERT INTO CategorieUtilisateurs VALUES(999,'professeur',1,1,0);INSERT INTO CategorieUtilisateurs VALUES(998,'professeur',1,1,-4);ROLLBACK;-- NN_CATEGORIEUTILISATEURS_10 NOT NULLINSERT INTO CategorieUtilisateurs VALUES(999,'professeur',1,1,NULL);ROLLBACK;-------------------------------- TESTS UTILISATEURS ------------------------------------- PK_UTILISATEURS_01 PRIMARY KEYINSERT INTO Utilisateurs VALUES(NULL,'foooooooo',0,1);INSERT INTO Utilisateurs VALUES(9999999,'LALALA',0,1);INSERT INTO Utilisateurs VALUES(9999999,'BAAAAR',0,1);ROLLBACK;-- NN_UTILISATEURS_02 NOT NULLINSERT INTO Utilisateurs VALUES(999999,NULL,0,1);ROLLBACK;-- CK_UTILISATEURS_03 CHECK(penaliteesImpayees >= 0)INSERT INTO Utilisateurs VALUES(999999,'Robert',-5,1);ROLLBACK;-- NN_UTILISATEURS_04 NOT NULLINSERT INTO Utilisateurs VALUES(999999,'Robert',NULL,1);ROLLBACK;-- FK_UTILISATEURS_05 REFERENCES CategorieUtilisateursINSERT INTO Utilisateurs VALUES(999999,'Robert',0,999);ROLLBACK;-- CONSTRAINT NN_UTILISATEURS_06_34 NOT NULLINSERT INTO Utilisateurs VALUES(999999,'Robert',0,NULL);ROLLBACK;-------------------------------- TESTS PRETS -------------------------------------------- PK_PRETS_01 PRIMARY KEYINSERT INTO Prets VALUES(NULL,SYSDATE,NULL,10001,1,1);INSERT INTO Prets VALUES(9999999999,SYSDATE,NULL,10001,1,1);INSERT INTO Prets VALUES(9999999999,SYSDATE,NULL,10001,1,1);ROLLBACK;-- NN_PRETS_02 NOT NULLINSERT INTO Prets VALUES(9999999999,NULL,NULL,10001,1,1,1);ROLLBACK;-- FK_PRETS_03 REFERENCES UtilisateursINSERT INTO Prets VALUES(9999999999,SYSDATE,NULL,0,1,1,1);ROLLBACK;-- NN_PRETS_04 NOT NULLINSERT INTO Prets VALUES(9999999999,SYSDATE,NULL,NULL,1,1,1);ROLLBACK;-- NN_PRETS_05 NOT NULLINSERT INTO Prets VALUES(9999999999,SYSDATE,NULL,10001,NULL,1,1);ROLLBACK;-- NN_PRETS_06 NOT NULLINSERT INTO Prets VALUES(9999999999,SYSDATE,NULL,10001,1,NULL,1);ROLLBACK;-- NN_PRETS_07 NOT NULLINSERT INTO Prets VALUES(9999999999,SYSDATE,NULL,10001,1,1,NULL);ROLLBACK;-- FK_PRETS_04 FOREIGN KEY(noExemplaire,noBiblio,noOeuvre)INSERT INTO Prets VALUES(9999999999,SYSDATE,NULL,10001,999,1,1);INSERT INTO Prets VALUES(9999999999,SYSDATE,NULL,10001,1,999,1);INSERT INTO Prets VALUES(9999999999,SYSDATE,NULL,10001,1,1,999);INSERT INTO Prets VALUES(9999999999,SYSDATE,NULL,10001,999,999,1);INSERT INTO Prets VALUES(9999999999,SYSDATE,NULL,10001,1,999,999);INSERT INTO Prets VALUES(9999999999,SYSDATE,NULL,10001,999,1,999);INSERT INTO Prets VALUES(9999999999,SYSDATE,NULL,10001,999,999,999);ROLLBACK;-------------------------------- TESTS TRIGGERS -------------------------------------------- BD_Utilisateurs_00 [Penalitées impayées]UPDATE Utilisateurs SET penaliteesImpayees = 999 WHERE noUtilisateur = 10001;DELETE FROM Utilisateurs WHERE noUtilisateur = 10001;ROLLBACK;-- AD_Utilisateurs_01 [Aucune penalitée, DELETE tous les prêts qu'il a]UPDATE Utilisateurs SET penaliteesImpayees = 0 WHERE noUtilisateur = 10001;--UPDATE Prets --SET dateRetour = SYSDATE --WHERE noUtilisateur = 10001; -- Uncomment si l'exception est levéeSELECT Count(*) -- Nombre de prets avant la suppresion [Ne fonctionne peut-être pas.. va surement lever BD_Prets_01]FROM Prets WHERE noUtilisateur = 10001;DELETE FROM Utilisateurs WHERE noUtilisateurs = 10001;SELECT Count(*) -- Nombre de prets après la suppresionFROM Prets WHERE noUtilisateur = 10001;ROLLBACK;-- BU_Prets_00 [Prévention du changement du numéro de pret]UPDATE Prets SET noPret = 98765 WHERE noPret = 1;SELECT * From Prets WHERE noPret = 98765;		--Si un prêt est remis, on ne peut le changer. Archivage.UPDATE Prets SET dateRetour = SYSDATE WHERE noPret = 1;UPDATE Prets SET noUtilisateur = 20001 WHERE noPret = 1;ROLLBACK;		--Un prêt doit être remis a une date postérieure ou égale a celle de celle du pretUPDATE Prets SET dateRetour = NULL WHERE noPret = 1;UPDATE Prets SEt dateRetour = '01/01/1986' WHERE noPret = 1;-- BD_PRETS_01 [Prévention de la suppresion de prêts non-remis]DELETE FROM Prets WHERE noPret = 1;ROLLBACK;-- BI_PRETS_02 [Prévention de prêt d'exemplaire déja preté]INSERT INTO Prets VALUES(1,SYSDATE,NULL,20001,1,1,2034);		--Essaie de louer plus d'exemplaire que sa categorie le lui permet.INSERT INTO Prets VALUES(10000,SYSDATE,NULL,10001,3,1,2034);-- AU_Prets_03SELECT penaliteesImpayees -- Devrait être NULL ou 0FROM UtilisateursWHERE noUtilisateur = 10001;UPDATE Prets SET dateRetour = SYSDATE + 25 WHERE noPret = 1;SELECT penaliteesImpayees -- Devrait être > 0FROM UtilisateursWHERE noUtilisateur = 10001;SPOOL OFF;