Advertisement
Guest User

Untitled

a guest
Oct 19th, 2018
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.09 KB | None | 0 0
  1. create table lavoratore(
  2. codice numeric primary key,
  3. nome varchar(20) not null,
  4. cognome varchar(20) not null,
  5. inprogetto numeric not null,
  6. insindacato varchar(20)
  7. );
  8.  
  9. create domain Tipo as varchar(2) check(value in ('S','D','C','ES','ED','B'));
  10.  
  11. create table sindacato(
  12. nome varchar(20) primary key,
  13. tipo Tipo,
  14. capo numeric not null
  15. );
  16.  
  17. create table progetto(
  18. codice numeric primary key,
  19. usura int not null default 1,
  20. check(usura > 0)
  21. );
  22.  
  23. alter table lavoratore
  24. add constraint tmp1 foreign key(inprogetto) references progetto on delete restrict deferrable;
  25.  
  26. alter table lavoratore
  27. add constraint tmp2 foreign key(insindacato) references sindacato on delete set null deferrable;
  28.  
  29. alter table sindacato
  30. add constraint tmp3 foreign key(capo) references lavoratore on delete cascade deferrable;
  31.  
  32.  
  33. //-----------------------------------------------------------------------------------------------------------------------
  34.  
  35. begin;
  36.  
  37. set constraints tmp1 deferred;
  38. set constraints tmp2 deferred;
  39. set constraints tmp3 deferred;
  40.  
  41. insert into sindacato values('CISL','C',100);
  42. insert into sindacato values('CGIL','S',130);
  43. insert into sindacato values('UIL','D',180);
  44. insert into sindacato values('COBAS','B',190);
  45. insert into sindacato values('CFAS',null,120);
  46.  
  47. insert into progetto values(1000,1);
  48. insert into progetto values(2000,2);
  49. insert into progetto values(3000,2);
  50. insert into progetto values(4000,4);
  51. insert into progetto values(5000,5);
  52. insert into progetto values(6000,3);
  53. insert into progetto values(7000,2);
  54.  
  55. insert into lavoratore values(100,'Mario','Rossi',1000,'CISL');
  56. insert into lavoratore values(110,'Paolo','Verdi',2000,'CISL');
  57. insert into lavoratore values(120,'Giorgio','Gialli',2000,'CISL');
  58. insert into lavoratore values(130,'Carlo','Neri',2000,'CGIL');
  59. insert into lavoratore values(140,'Dario','Grigi',3000,'CGIL');
  60. insert into lavoratore values(150,'Riccardo','Marroni',3000,'CGIL');
  61. insert into lavoratore values(160,'Stefano','Violi',4000,'CGIL');
  62. insert into lavoratore values(170,'Marco','Fabbri',4000,'UIL');
  63. insert into lavoratore values(180,'Guido','Maestri',5000,'UIL');
  64. insert into lavoratore values(190,'Alberto','Virgili',5000,'COBAS');
  65. insert into lavoratore values(200,'Silvio','Salti',5000,'COBAS');
  66.  
  67. end;
  68.  
  69.  
  70. //-----------------------------------------------------------------------------------------------------------------------
  71.  
  72.  
  73. create view db(codice,nome,cognome,sindacato,tipo,capo,progetto,usura) as
  74. select l.codice,l.nome,l.cognome,s.nome,tipo,capo,p.codice,usura
  75. from lavoratore l full outer join sindacato s on insindacato = s.nome
  76. full outer join progetto p on l.inprogetto = p.codice
  77.  
  78.  
  79. //-----------------------------------------------------------------------------------------------------------------------
  80.  
  81.  
  82. delete from progetto p where codice not in (select p.codice
  83. from progetto p,lavoratore
  84. where p.codice = inprogetto);
  85.  
  86. delete from lavoratore where codice = 180;
  87.  
  88.  
  89. //-----------------------------------------------------------------------------------------------------------------------
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement