Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- CREATE TRIGGER nazwaTriggera ON {tableName | viewName}
- {FOR |after | instead OF}
- {[INSERT][,][UPDATE][,][DELETE]}
- AS
- // isnturkcje
- GO
- CREATE TABLE tabOsoba(
- imie VARCHAR(20),
- nazwisko VARCHAR(20),
- wiek INT);
- CREATE TRIGGER info ON tabOsoba after INSERT AS
- print ('Do tabeli tabOsoba został wprowadzony nowy rekord');
- GO
- INSERT INTO tabOsoba VALUES('janek',' wisniewski', 5);
- DROP TRIGGER info;
- DROP TABLE tabOsoba;
- SELECT Imie, Nazwisko, rokUrodz, Wzrost, idSzefa INTO tabOsoby FROM Osoby; // <-- kopiowanie elemnentow ztabeli do tabeli
- CREATE TRIGGER info ON tabOsoby after UPDATE AS
- print 'Dane zostaly zaktualizowane';
- GO
- UPDATE tabOsoby SET IdSzefa=3 WHERE RokUrodz > 1950;
- SELECT * FROM tabOsoby;
- DROP TRIGGER info;
- DROP TABLE tabOsoby;
- SELECT * INTO tabKlienci FROM Klienci;
- CREATE TRIGGER info2 ON tabKlienci after DELETE AS
- print 'usunieto after'
- GO
- CREATE TRIGGER info3 ON tabKlienci instead OF DELETE AS
- print 'usunieto instead'
- GO
- DELETE FROM tabKlienci WHERE IdKlienta = 4765;
- DROP TRIGGER info2;
- DROP TRIGGER info3;
- BEGIN tran
- commit tran
- ROLLBACK tran
- poziomy izolazji:
- read_uncommitted
- read_committed
- reteapable_read
- SET TRANSACTION isolation level read_uncommitted;
- dbcc useroptions;
- SELECT * INTO dzialy1 FROM Dzialy;
- SELECT * FROM dzialy1;
- SELECT top 20 percent * FROM dzialy1;
- // pobeira dwa rekordy pomijajac pierwsze 5
- SELECT * FROM Dzialy ORDER BY IdDzialu
- offset 5 ROWS fetch FIRST 2 ROWS ONLY;
- // pobeira rekordy pomijajac pierwsze 5
- SELECT * FROM Dzialy ORDER BY IdDzialu
- offset 5 ROWS
- // pobeira pierwszyhc 6 rekordow
- SELECT * FROM Dzialy ORDER BY IdDzialu
- offset 0 ROWS fetch FIRST 6 ROWS ONLY;
- SELECT IdZarobku, IdOsoby, Brutto,
- ROW_NUMBER()
- OVER (partition BY idOsoby ORDER BY Brutto) FROM Zarobki;
- SELECT IdZarobku, IdOsoby, Brutto,
- ROW_NUMBER()
- OVER (ORDER BY Brutto) AS nr FROM Zarobki;
- SELECT IdZarobku, IdOsoby, Brutto,
- lag(Brutto)
- OVER (partition BY idOsoby ORDER BY Brutto) FROM Zarobki;
- SELECT IdZarobku, IdOsoby, Brutto,
- lead(Brutto)
- OVER (partition BY idOsoby ORDER BY Brutto) FROM Zarobki;
- /* zad1.
- wybierz klientów, których imie rozpoczyna się na jedną z liter:A,B,C,D,E lub w nazwisku wystepuje litera H.
- Posortuj klientów wg imienia
- */
- SELECT * FROM Klienci WHERE
- Imie LIKE '[ABCDE]%' OR Nazwisko LIKE '%H%';
- /* zad2.
- Utwórz funkcję pokazKlientow pobierającą 1 znak i zwracającą klientów, których nazwiska rozpoczynają się na przekazaną literę.
- Wywołaj funkcję wybierając tylko nazwiska i imiona klientów.
- */
- CREATE FUNCTION dbo.pokazKlientow( @znak CHAR(1) ) RETURNS TABLE
- AS
- RETURN (SELECT * FROM Klienci WHERE Nazwisko LIKE @znak+'%');
- GO
- SELECT Nazwisko, Imie FROM pokazKLientow('n');
- CREATE FUNCTION pokazKlientow2 (@znak CHAR(1))
- RETURNS @tab TABLE (nazwisko VARCHAR(50), imie VARCHAR(50))
- AS
- BEGIN
- INSERT INTO @tab SELECT Nazwisko, imie FROM KLienci WHERE nazwisko LIKE @znak+'%';
- RETURN;
- END;
- GO
- SELECT Nazwisko, Imie FROM pokazKLientow2('n');
- /* zad3.
- utwórz procedurę, która pobiera parametr w postaci roku zatrudnienia
- i zwraca w postaci parametru wyjściowego liczbę osób zatrudnionych w tym roku.
- */
- CREATE PROCEDURE liczbaZatrudnionych @rok INT, @liczba INT OUTPUT
- AS
- SELECT @liczba = COUNT(idOsoby)FROM Osoby WHERE YEAR(DataZatr)=@rok;
- GO
- DECLARE @ile INT;
- EXEC liczbaZatrudnionych 2003, @ile output
- SELECT @ile;
- SELECT * FROM osoby WHERE YEAR(DataZatr)=2003
- /* zad4.
- Utwórz trigger, który będzie blokował zarówno wstawianie, jak i usuwanie danych do tabeli Dzialy,
- a podczas próby dokonania takich zmian wyświetli informację 'Wykonano próbe wstawienia lub modyfikacji danych w tabeli Działy'.
- usun trigger.
- */
- CREATE TRIGGER informacje
- ON Dzialy
- instead OF INSERT, UPDATE
- AS
- print 'Wykonano probe wstawienia lub modyfikacji danych tabeli'
- DROP TRIGGER informacje
Add Comment
Please, Sign In to add comment