Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 5.1
- CREATE TRIGGER update_MiPro ON tblMiPro FOR INSERT,UPDATE AS
- DECLARE @neu INT
- SELECT @neu = @@rowcount
- IF (SELECT COUNT(*) FROM tblMiPro , inserted
- WHERE tblMiPro.Mitnr = inserted.Mitnr) != @neu
- BEGIN
- ROLLBACK TRANSACTION
- RETURN
- END
- 5.2
- INSERT INTO tblMiPro (Mitnr,Pronr,Istvzae,Planvzae)
- VALUES ("103","37",0.1,0.1)
- INSERT INTO tblMiPro (Mitnr,Pronr,Istvzae,Planvzae)
- VALUES ("104","49",0.2,0.4)
- INSERT INTO tblMiPro (Mitnr,Pronr,Istvzae,Planvzae)
- VALUES ("112","38",0.3,0.4)
- 5.3
- INSERT INTO tblMiPro (Mitnr,Pronr,Istvzae,Planvzae)
- VALUES ("99999","38",0.3,0.4)
- Kann nicht gemacht werden da co_forkey dies verhindert,weil
- kein Mitarbeiter mit "99999" IN der tblMitarbeiter gibt
- 5.4
- INSERT INTO
- 6.0
- CREATE TRIGGER delete_Pro ON tblProjekt FOR DELETE AS
- IF (SELECT COUNT(*) FROM tblMiPro,deleted WHERE tblMiPro.Pronr=deleted.Pronr)!=0
- BEGIN
- Print("Fehler Projektnummer nocjh in Mipro vorhanden")
- ROLLBACK TRANSACTION
- RETURN
- END
- 7.1
- CREATE TRIGGER modi_Planvzae ON tblMiPro FOR INSERT,UPDATE AS
- IF (SELECT SUM(tblMiPro.Planvzae) FROM tblMiPro,inserted
- WHERE tblMiPro.Mitnr=inserted.Mitnr) >1
- BEGIN
- Print'Fehler Mitarbeiter: tblMiPro.Mitnr ausgelastet'
- ROLLBACK TRANSACTION
- RETURN
- END
- 7.2
- CREATE TRIGGER MiPro_Loesch ON tblMiPro
- FOR DELETE AS
- BEGIN
- SELECT DISTINCT Pronr, SUM(Planvzae) AS SUM_Plan, SUM(Istvzae) AS SUM_Ist
- FROM deleted
- GROUP BY Pronr
- HAVING SUM(Planvzae) > SUM(Istvzae)
- IF @@rowcount > 0
- BEGIN
- PRINT 'ERROR: Das Löschen folgender Projekte ist nicht möglich, da diese sich noch in Bearbeitung befinden'
- ROLLBACK TRANSACTION
- END
- ELSE
- BEGIN
- SELECT PrLeNr FROM tblProjekt WHERE Pronr IN (SELECT Pronr FROM deleted)
- UPDATE tblProjekt SET PrLeNr = NULL WHERE Pronr IN (SELECT Pronr FROM deleted)
- PRINT 'Löschen war erfolgreich'
- END
- RETURN
- END
- Versuch, leider nur für einen DS
- CREATE TRIGGER putze_MiPro ON tblMiPro FOR DELETE AS
- DECLARE @plan FLOAT , @ist FLOAT
- SELECT @plan = (SUM(Istvzae) FROM deleted GROUP BY Pronr)
- SELECT @ist = (SUM(Planvzae) FROM deleted GROUP BY Pronr)
- IF( @plan < @ist)
- BEGIN
- Print'Fehler Projekt nocht nicht abgeschlossen'
- ROLLBACK TRANSACTION
- RETURN
- END
- ELSE BEGIN
- UPDATE tblProjekt
- SET PrLeNr= NULL
- WHERE Pronr= deleted.Pronr
- END
- 8.1
- CREATE TABLE Bprotokoll
- (Mitnr CHAR(5) NOT NULL,Nutzer CHAR(16) ,Zeit datetime, Beruf_alt CHAR(15),Beruf_neu CHAR (15))
- 8.2
- CREATE TRIGGER Beruf_Update ON tblMitarbeiter
- FOR UPDATE AS
- BEGIN
- IF UPDATE(Beruf)
- BEGIN
- INSERT INTO Bprotokoll
- SELECT i.Mitnr, user_name(), getdate(), d.Beruf, i.Beruf
- FROM deleted d JOIN inserted i ON d.Mitnr=i.Mitnr
- END
- END
- 8.3
- SELECT * FROM Bprotokoll
- Leere Liste
- UPDATE tblMitarbeiter SET Beruf= "Hanswurst" WHERE Mitnr="15055"
- SELECT * FROM Bprotokoll
- Beruf geändert aber ALTER Beruf noch bekannt
- 8.4
- ALTER TABLE ADD PRIMARY KEY (Mitnr,Nutzer,Zeit)
- 8.5
- ALTER TABLE Bprotokoll ADD DSNo INT IDENTITY PRIMARY KEY
- Test: Die DS wurden mit einer AUTO ID ergänst
- 8.6
- TRIGGER geht auch ohne Anpassungen!
- 8.7
- CREATE TABLE Bprotokoll2
- (DSNo INT PRIMARY KEY, Mitnr CHAR(5) NOT NULL,Nutzer CHAR(16) ,Zeit datetime, Beruf_alt CHAR(15),Beruf_neu CHAR (15))
- 8.8
- CREATE TRIGGER Beruf2_Update ON tblMitarbeiter
- FOR UPDATE AS
- BEGIN
- DECLARE @anz INT
- IF UPDATE(Beruf)
- BEGIN
- SELECT @anz = (SELECT COUNT(DSNo) FROM Bprotokoll2) +1
- INSERT INTO Bprotokoll2
- SELECT @anz, i.Mitnr, user_name(), getdate(), d.Beruf, i.Beruf
- FROM deleted d JOIN inserted i ON d.Mitnr=i.Mitnr
- END
- END
- 8.9
Add Comment
Please, Sign In to add comment