Advertisement
horozov86

TRIGER

Mar 12th, 2025
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 4.03 KB | None | 0 0
  1. --  SELECT DISTINCT
  2. --    SKUNDENGRP.ID AS GroupID,
  3. --    SKUNDENGRP.NR AS GroupNR,
  4. --    SKUNDENGRP.BEZEICHNUNG AS GroupName,
  5. --    ABPGRPCUSTOMFIELDV.CFBOOLEAN4 AS Web_AccessToSite,
  6. --    ABPGRPCUSTOMFIELDV.CFBOOLEAN5 AS Web_Customers,
  7. --    ABPGRPCUSTOMFIELDV.CFBOOLEAN6 AS Web_Carriers,
  8. --    ABPGRPCUSTOMFIELDV.CFBOOLEAN7 AS Web_Carriers_Transports_View,
  9. --    ABPGRPCUSTOMFIELDV.CFBOOLEAN8 AS Web_Carriers_Invoices_View,
  10. --    ABPGRPCUSTOMFIELDV.CFSTRING1  AS Web_AccKey,
  11. --    ABPGRPCUSTOMFIELDV.CFBOOLEAN9 AS Web_Carriers_Stock_Access,
  12. --    (
  13. --        SELECT LISTAGG(t.n, ',') WITHIN GROUP (ORDER BY t.n)
  14. --        FROM (
  15. --            SELECT SKUNDEN.NR AS n
  16. --            FROM SKUNDEN
  17. --            LEFT JOIN SKUNDENGRPZUORD b ON b.KUNDENNR = SKUNDEN.NR
  18. --            WHERE b.GRUPPENID = SKUNDENGRP.ID
  19. --        ) t
  20. --    ) AS bplist,
  21. --    SUBSTR(STANDARD_HASH(ABPGRPCUSTOMFIELDV.CFSTRING1, 'SHA256'), 1, 8) AS Generated_Password
  22. --FROM SKUNDENGRP
  23. --LEFT JOIN SKUNDENGRPZUORD ON SKUNDENGRP.ID = SKUNDENGRPZUORD.GRUPPENID
  24. --LEFT JOIN ABPGRPCUSTOMFIELDV ON SKUNDENGRP.ID = ABPGRPCUSTOMFIELDV.ID
  25. --WHERE
  26. --    ABPGRPCUSTOMFIELDV.CFSTRING1 IS NOT NULL;
  27. --
  28. --
  29. --  GRANT SELECT ON "SOL"."UDX_VIEW_WEB_USERS_ACCESS" TO "ALEXORAWEB";
  30. --  
  31. --  
  32. --BEGIN
  33. --    UPDATE ABPGRPCUSTOMFIELDV
  34. --    SET CFSTRING3 = USUBSTR(STANDARD_HASH(ABPGRPCUSTOMFIELDV.CFSTRING1, 'SHA256'), 1, 8)
  35. --    WHERE CFSTRING1 IS NOT NULL
  36. --      AND CFSTRING3 IS NULL;
  37. --
  38. --    COMMIT;
  39. --END;
  40. --
  41. --
  42. --UPDATE ABPGRPCUSTOMFIELDV
  43. --SET CFSTRING3 = SUBSTR(STANDARD_HASH(ABPGRPCUSTOMFIELDV.CFSTRING1, 'SHA256'), 1, 8)
  44. --WHERE CFSTRING1 IS NOT NULL
  45. --AND CFSTRING3 IS NULL;
  46. --
  47. --SELECT * FROM ABPGRPCUSTOMFIELDV;
  48. --
  49. --
  50. --
  51. --BEGIN
  52. --   DBMS_SCHEDULER.create_job (
  53. --      job_name        => 'update_cfstring3_job',
  54. --      job_type        => 'PLSQL_BLOCK',
  55. --      job_action      => 'UPDATE ABPGRPCUSTOMFIELDV
  56. --                            SET CFSTRING3 = SUBSTR(STANDARD_HASH(CFSTRING1, ''SHA256''), 1, 8)
  57. --                            WHERE CFSTRING1 IS NOT NULL
  58. --                            AND CFSTRING3 IS NULL;',
  59. --      repeat_interval => 'FREQ=HOURLY; INTERVAL=2',
  60. --      enabled         => TRUE
  61. --   );
  62. --END;
  63. --
  64. --UPDATE ABPGRPCUSTOMFIELDV
  65. --SET CFSTRING3 = null
  66. --where CFSTRING1 = 'cones826@gmail.com';
  67. --
  68. --BEGIN
  69. --   DBMS_SCHEDULER.create_job (
  70. --      job_name        => 'update_cfstring3_job',
  71. --      job_type        => 'PLSQL_BLOCK',
  72. --      job_action      => 'UPDATE ABPGRPCUSTOMFIELDV
  73. --                            SET CFSTRING3 = SUBSTR(STANDARD_HASH(CFSTRING1, ''SHA256''), 1, 8)
  74. --                            WHERE CFSTRING1 IS NOT NULL
  75. --                            AND CFSTRING3 IS NULL;',
  76. --      repeat_interval => 'FREQ=HOURLY; INTERVAL=2',
  77. --      enabled         => TRUE
  78. --   );
  79. --END;
  80. --/
  81.  
  82. CREATE OR REPLACE TRIGGER UDX_PASSWORD_INSERT
  83. AFTER INSERT OR UPDATE ON ABPGRPCUSTOMFIELDV
  84. FOR EACH ROW
  85. DECLARE
  86.    v_upd_done BOOLEAN := FALSE;  -- Флаг за проверка дали актуализацията е извършена
  87. BEGIN
  88.    -- Ако CFSTRING3 е NULL и още не е актуализиран
  89.    IF :NEW.CFSTRING3 IS NULL AND v_upd_done = FALSE THEN
  90.       -- Актуализираме само ако CFSTRING3 все още е NULL
  91.       UPDATE ABPGRPCUSTOMFIELDV
  92.       SET CFSTRING3 = SUBSTR(STANDARD_HASH(:NEW.CFSTRING1, 'SHA256'), 1, 8)
  93.       WHERE CFSTRING1 = :NEW.CFSTRING1
  94.       AND CFSTRING3 IS NULL;
  95.  
  96.       v_upd_done := TRUE;  -- Задаваме флага на TRUE, за да предотвратим рекурсия
  97.    END IF;
  98. END;
  99. /
  100.  
  101. CREATE OR REPLACE TRIGGER UDX_PASSWORD_INSERT
  102. AFTER INSERT OR UPDATE ON ABPGRPCUSTOMFIELDV
  103. FOR EACH ROW
  104. DECLARE
  105.    v_upd_done BOOLEAN := FALSE;
  106. BEGIN
  107.  
  108.    IF :NEW.CFSTRING3 IS NULL AND v_upd_done = FALSE THEN
  109.       UPDATE ABPGRPCUSTOMFIELDV
  110.       SET CFSTRING3 = SUBSTR(STANDARD_HASH(:NEW.CFSTRING1, 'SHA256'), 1, 8)
  111.       WHERE CFSTRING1 = :NEW.CFSTRING1
  112.       AND CFSTRING3 IS NULL;
  113.  
  114.       v_upd_done := TRUE;
  115.    END IF;
  116. END;
  117. /
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement