Guest User

Untitled

a guest
Apr 20th, 2018
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 4.04 KB | None | 0 0
  1. 5.1
  2. CREATE TRIGGER update_MiPro ON tblMiPro FOR INSERT,UPDATE AS
  3.   DECLARE @neu INT
  4.    SELECT @neu = @@rowcount
  5.    IF (SELECT COUNT(*) FROM tblMiPro , inserted
  6.     WHERE tblMiPro.Mitnr = inserted.Mitnr) != @neu
  7.   BEGIN
  8.   ROLLBACK TRANSACTION
  9.   RETURN
  10. END  
  11.  
  12. 5.2
  13.  
  14. INSERT INTO tblMiPro (Mitnr,Pronr,Istvzae,Planvzae)
  15. VALUES ("103","37",0.1,0.1)
  16. INSERT INTO tblMiPro (Mitnr,Pronr,Istvzae,Planvzae)
  17. VALUES ("104","49",0.2,0.4)
  18. INSERT INTO tblMiPro (Mitnr,Pronr,Istvzae,Planvzae)
  19. VALUES ("112","38",0.3,0.4)
  20.  
  21. 5.3
  22.  
  23. INSERT INTO tblMiPro (Mitnr,Pronr,Istvzae,Planvzae)
  24. VALUES ("99999","38",0.3,0.4)
  25.  
  26. Kann nicht gemacht werden da co_forkey dies verhindert,weil
  27. kein Mitarbeiter mit "99999" IN der tblMitarbeiter gibt
  28.  
  29. 5.4
  30. INSERT INTO
  31.  
  32.  
  33. 6.0
  34. CREATE TRIGGER delete_Pro ON tblProjekt FOR DELETE AS
  35.   IF (SELECT COUNT(*) FROM tblMiPro,deleted WHERE tblMiPro.Pronr=deleted.Pronr)!=0
  36.   BEGIN
  37.   Print("Fehler Projektnummer nocjh in Mipro vorhanden")
  38.   ROLLBACK TRANSACTION
  39.   RETURN
  40. END
  41.  
  42.  
  43. 7.1
  44. CREATE TRIGGER modi_Planvzae ON tblMiPro FOR INSERT,UPDATE AS
  45.   IF (SELECT SUM(tblMiPro.Planvzae) FROM tblMiPro,inserted
  46.       WHERE tblMiPro.Mitnr=inserted.Mitnr) >1
  47.   BEGIN
  48.   Print'Fehler Mitarbeiter: tblMiPro.Mitnr ausgelastet'
  49.   ROLLBACK TRANSACTION
  50.   RETURN
  51. END
  52.  
  53. 7.2
  54.  
  55. CREATE TRIGGER MiPro_Loesch ON tblMiPro
  56.   FOR DELETE AS
  57.   BEGIN
  58.  
  59.       SELECT  DISTINCT Pronr, SUM(Planvzae) AS SUM_Plan, SUM(Istvzae) AS SUM_Ist
  60.       FROM deleted
  61.       GROUP BY Pronr
  62.       HAVING SUM(Planvzae) > SUM(Istvzae)
  63.  
  64.       IF @@rowcount > 0
  65.         BEGIN
  66.               PRINT 'ERROR: Das Löschen folgender Projekte ist nicht möglich, da diese sich noch in Bearbeitung befinden'
  67.               ROLLBACK TRANSACTION
  68.         END
  69.       ELSE
  70.         BEGIN
  71.             SELECT PrLeNr FROM tblProjekt WHERE Pronr IN (SELECT Pronr FROM deleted)
  72.             UPDATE tblProjekt SET PrLeNr = NULL WHERE Pronr IN (SELECT Pronr FROM deleted)
  73.             PRINT 'Löschen war erfolgreich'
  74.         END
  75.       RETURN
  76.   END
  77.  
  78.  
  79. Versuch, leider nur für einen DS
  80.  
  81.  
  82. CREATE TRIGGER putze_MiPro ON tblMiPro FOR DELETE AS
  83. DECLARE @plan FLOAT , @ist FLOAT
  84.  
  85. SELECT @plan = (SUM(Istvzae) FROM deleted  GROUP BY Pronr)
  86. SELECT @ist = (SUM(Planvzae) FROM deleted  GROUP BY Pronr)
  87.  
  88. IF(  @plan < @ist)
  89.   BEGIN
  90.   Print'Fehler Projekt nocht nicht abgeschlossen'
  91.   ROLLBACK TRANSACTION
  92.   RETURN
  93.   END
  94.    ELSE BEGIN
  95.     UPDATE tblProjekt
  96.     SET PrLeNr= NULL
  97.     WHERE Pronr= deleted.Pronr
  98.    END
  99.  
  100. 8.1
  101.  
  102. CREATE TABLE Bprotokoll
  103. (Mitnr CHAR(5) NOT NULL,Nutzer CHAR(16) ,Zeit datetime, Beruf_alt CHAR(15),Beruf_neu CHAR (15))
  104.  
  105. 8.2
  106.  
  107. CREATE TRIGGER Beruf_Update ON tblMitarbeiter
  108.         FOR UPDATE AS
  109.         BEGIN
  110.                 IF UPDATE(Beruf)
  111.                         BEGIN
  112.                                 INSERT INTO Bprotokoll
  113.                                 SELECT i.Mitnr, user_name(), getdate(), d.Beruf, i.Beruf
  114.                                 FROM deleted d JOIN inserted i ON d.Mitnr=i.Mitnr
  115.                         END
  116.         END
  117.  
  118.  
  119. 8.3
  120.  
  121. SELECT * FROM Bprotokoll
  122. Leere Liste
  123.  
  124. UPDATE tblMitarbeiter SET Beruf= "Hanswurst" WHERE Mitnr="15055"
  125. SELECT * FROM Bprotokoll
  126. Beruf geändert aber ALTER Beruf noch bekannt
  127.  
  128. 8.4
  129.  
  130. ALTER TABLE ADD PRIMARY KEY (Mitnr,Nutzer,Zeit)
  131.  
  132. 8.5
  133.  
  134. ALTER TABLE Bprotokoll ADD DSNo INT IDENTITY PRIMARY KEY
  135.  
  136. Test: Die DS wurden mit einer AUTO ID ergänst
  137.  
  138. 8.6
  139.  
  140. TRIGGER geht auch ohne Anpassungen!
  141.  
  142. 8.7
  143.  
  144. CREATE TABLE Bprotokoll2
  145. (DSNo INT PRIMARY KEY, Mitnr CHAR(5) NOT NULL,Nutzer CHAR(16) ,Zeit datetime, Beruf_alt CHAR(15),Beruf_neu CHAR (15))
  146.  
  147. 8.8
  148.  
  149. CREATE TRIGGER Beruf2_Update ON tblMitarbeiter
  150.         FOR UPDATE AS
  151.         BEGIN
  152.         DECLARE @anz INT
  153.                 IF UPDATE(Beruf)
  154.                  BEGIN
  155.            SELECT @anz = (SELECT COUNT(DSNo) FROM Bprotokoll2) +1
  156.                    INSERT INTO Bprotokoll2
  157.                    SELECT @anz, i.Mitnr, user_name(), getdate(), d.Beruf, i.Beruf
  158.                    FROM deleted d JOIN inserted i ON d.Mitnr=i.Mitnr
  159.                  END
  160.         END
  161.  
  162. 8.9
Add Comment
Please, Sign In to add comment