MarVin666

Sql moje - lista 6

Jan 19th, 2017
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PL/SQL 3.07 KB | None | 0 0
  1. CREATE TABLESPACE moja_przestrzen DATAFILE 'dane_moja_przestrzen.dbf' SIZE 10M  EXTENT MANAGEMENT LOCAL UNIFORM SIZE 128k;
  2.  
  3. ms_dane
  4.  
  5. ALTER TABLE RAJD MOVE TABLESPACE ms_dane;
  6. ALTER TABLE TRASA MOVE TABLESPACE ms_dane;
  7.  
  8. ALTER TABLE trasa
  9. ADD CONSTRAINT trasa_id_rajdu
  10. FOREIGN KEY (id_rajdu)
  11. REFERENCES rajd(id_rajdu);
  12.  
  13. CREATE TABLE RAJD_KOPIA AS SELECT * FROM RAJD;
  14. CREATE TABLE TRASA_KOPIA AS SELECT * FROM TRASA;
  15.  
  16. ALTER TABLE RAJD_KOPIA MOVE TABLESPACE ms_dane;
  17. ALTER TABLE TRASA_KOPIA MOVE TABLESPACE ms_dane;
  18.  
  19. ALTER TABLE RAJD_KOPIA ADD PRIMARY KEY(id_rajdu);
  20. ALTER TABLE TRASA_KOPIA ADD PRIMARY KEY(id_trasy);
  21.  
  22. BEGIN
  23. FOR i IN 1..100000 LOOP
  24.   INSERT INTO RAJD(id_rajdu,kraj) VALUES(i,'polska');
  25. END LOOP;
  26. END;
  27.  
  28. BEGIN
  29. FOR i IN 1..100000 LOOP
  30.   INSERT INTO TRASA(id_trasy,dlugosc) VALUES(i,'Krotka');
  31. END LOOP;
  32. END;
  33.  
  34.  
  35. BEGIN
  36. EXECUTE IMMEDIATE 'TRUNCATE TABLE TRASA';
  37. FOR i IN 1..100000 LOOP
  38.   INSERT INTO TRASA(id_trasy,id_rajdu) VALUES(i, TRUNC(DBMS_RANDOM.VALUE(1,99999)));
  39. END LOOP;
  40. END;
  41.  
  42. DECLARE
  43. czpoczatek NUMBER;
  44. czkoniec NUMBER;
  45. BEGIN
  46. EXECUTE IMMEDIATE 'TRUNCATE TABLE RAJD_KOPIA';
  47.   czpoczatek := DBMS_UTILITY.get_time;
  48.   INSERT INTO RAJD_KOPIA (SELECT * FROM RAJD);
  49.   czkoniec := DBMS_UTILITY.get_time;
  50.   DBMS_OUTPUT.put_line('Czas trwania: '||TO_CHAR(czkoniec-czpoczatek));
  51. END;  -- 76
  52.  
  53. DECLARE
  54. czpoczatek NUMBER;
  55. czkoniec NUMBER;
  56. BEGIN
  57. EXECUTE IMMEDIATE 'TRUNCATE TABLE TRASA_KOPIA';
  58.   czpoczatek := DBMS_UTILITY.get_time;
  59.   INSERT INTO TRASA_KOPIA (SELECT * FROM TRASA);
  60.   czkoniec := DBMS_UTILITY.get_time;
  61.   DBMS_OUTPUT.put_line('Czas trwania: '||TO_CHAR(czkoniec-czpoczatek));
  62. END;  -- 71
  63.  
  64. SELECT TABLE_NAME, LOGGING FROM USER_TABLES WHERE TABLE_NAME ='RAJD_KOPIA';
  65.  
  66. ALTER TABLE RAJD_KOPIA NOLOGGING; -- wylaczamy dziennik powtorzen
  67.  
  68.  
  69. TRUNCATE TABLE RAJD_KOPIA;
  70. DECLARE
  71. czpoczatek NUMBER;
  72. czkoniec NUMBER;
  73. BEGIN
  74. EXECUTE IMMEDIATE 'TRUNCATE TABLE RAJD_KOPIA';
  75.   czpoczatek := DBMS_UTILITY.get_time;
  76.   INSERT /*+APPEND*/ INTO RAJD_KOPIA (SELECT * FROM RAJD);
  77.   czkoniec := DBMS_UTILITY.get_time;
  78.   DBMS_OUTPUT.put_line('Czas trwania: '||TO_CHAR(czkoniec-czpoczatek));
  79. END;  -- 76
  80.  
  81.  
  82. DECLARE
  83. czpoczatek NUMBER;
  84. czkoniec NUMBER;
  85. x NUMBER;
  86. BEGIN
  87. czpoczatek := DBMS_UTILITY.get_time;
  88. FOR I IN (SELECT * FROM RAJD WHERE id_rajdu<1000) LOOP
  89.   SELECT COUNT(1) INTO x FROM TRASA WHERE id_rajdu=i.id_rajdu;
  90.   END LOOP;
  91. czkoniec := DBMS_UTILITY.get_time;
  92. DBMS_OUTPUT.put_line('Czas trwania: '||TO_CHAR(czkoniec-czpoczatek));
  93. END;
  94.  
  95. DECLARE
  96. czpoczatek NUMBER;
  97. czkoniec NUMBER;
  98. x NUMBER;
  99. BEGIN
  100. czpoczatek := DBMS_UTILITY.get_time;
  101. FOR I IN (SELECT * FROM RAJD_KOPIA WHERE id_rajdu<1000) LOOP
  102.   SELECT COUNT(1) INTO x FROM TRASA_KOPIA WHERE id_rajdu=i.id_rajdu;
  103.   END LOOP;
  104. czkoniec := DBMS_UTILITY.get_time;
  105. DBMS_OUTPUT.put_line('Czas trwania: '||TO_CHAR(czkoniec-czpoczatek));
  106. END;
  107.  
  108. CREATE OR REPLACE TRIGGER t_update_id_rajdu
  109. AFTER UPDATE OF id_rajdu
  110. ON RAJD_KOPIA
  111. FOR EACH ROW
  112. BEGIN
  113.   UPDATE TRASA_KOPIA
  114.   SET id_rajdu=:NEW.id_rajdu
  115.   WHERE id_rajdu =:old.id_rajdu;
  116. END;
  117.  
  118. ALTER TABLE RAJD_KOPIA ADD CONSTRAINT CASCADE UPDATE;
Advertisement
Add Comment
Please, Sign In to add comment