Wykład 5 funkcje i procedury pamiętane widoki (perspektywy) wyzwalacze



Podobne dokumenty
Wykład 5 funkcje i procedury pamiętane widoki (perspektywy) wyzwalacze

Blaski i cienie wyzwalaczy w relacyjnych bazach danych. Mgr inż. Andrzej Ptasznik

Programowanie w SQL procedury i funkcje. UWAGA: Proszę nie zapominać o prefiksowaniu nazw obiektów ciągiem [OLIMP\{nr indeksu}] Funkcje użytkownika

Wyzwalacz - procedura wyzwalana, składowana fizycznie w bazie, uruchamiana automatycznie po nastąpieniu określonego w definicji zdarzenia

Wyzwalacze. do automatycznego generowania wartości kluczy głównych. Składnia instrukcji tworzacej wyzwalacz

Administracja i programowanie pod Microsoft SQL Server 2000

E.14 Bazy Danych cz. 18 SQL Funkcje, procedury składowane i wyzwalacze

DECLARE VARIABLE zmienna1 typ danych; BEGIN

INTERNETOWE BAZY DANYCH materiały pomocnicze - wykład X

Instrukcja podwaja zarobki osób, których imiona zaczynają się P i dalsze litery alfabetu zakładamy, że takich osbób jest kilkanaście.

Przykład 3 Zdefiniuj w bazie danych hurtownia_nazwisko przykładową funkcję użytkownika fn_rok;

Cele. Definiowanie wyzwalaczy

Oracle11g: Wprowadzenie do SQL

BAZY DANYCH Cz III. Transakcje, Triggery

Oracle PL/SQL. Paweł Rajba.

Procedury wyzwalane. (c) Instytut Informatyki Politechniki Poznańskiej 1

Używany kiedy pełna treść instrukcji SQL jest nieznana przed uruchomieniem programu.

T-SQL dla każdego / Alison Balter. Gliwice, cop Spis treści. O autorce 11. Dedykacja 12. Podziękowania 12. Wstęp 15

Systemowe aspekty baz

PODSTAWY BAZ DANYCH 13. PL/SQL

3 Przygotowali: mgr inż. Barbara Łukawska, mgr inż. Maciej Lasota

Wyzwalacze. Anna Fiedorowicz Bazy danych 2

Wykład :45 BD-1 W_3

1. Wyzwalacze BD (ang. triggers)

LAB 6 BEGIN TRANSACTION, COMMIT, ROLLBACK, SET TRANSACTION ISOLATION LEVEL,

Systemy GIS Tworzenie zapytań w bazach danych

Plan bazy: Kod zakładający bazę danych: DROP TABLE noclegi CASCADE; CREATE TABLE noclegi( id_noclegu SERIAL NOT NULL,

SQL Server i T-SQL w mgnieniu oka : opanuj język zapytań w 10 minut dziennie / Ben Forta. Gliwice, Spis treści

Zaawansowane bazy danych i hurtownie danych semestr I

Administracja i programowanie pod Microsoft SQL Server 2000

PRZESTRZENNE BAZY DANYCH WYKŁAD 2

Ref. 7 - Język SQL - polecenia DDL i DML

Projektowanie systemów baz danych

Aspekty aktywne baz danych

Wykład 8. SQL praca z tabelami 5

Bazy danych 2. Wykład 1

Tworzenie widoku CREATE OR REPLACE VIEW [nazwa_widoku] AS SELECT [nazwy_kolumn] FROM [nazwa_tablicy];

Przestrzenne bazy danych Podstawy języka SQL

Składowane procedury i funkcje

Microsoft SQL Server Podstawy T-SQL

Bazy danych. Wykład IV SQL - wprowadzenie. Copyrights by Arkadiusz Rzucidło 1

Systemowe aspekty baz danych

Literatura: SQL Ćwiczenia praktyczne Autor: Marcin Lis Wydawnictwo: Helion. Autor: Joanna Karwowska

15. Funkcje i procedury składowane PL/SQL

SQL 4 Structured Query Lenguage

Bazy danych. Bazy danych. Podstawy języka SQL. Dr inż. Paweł Kasprowski.

PLAN WYKŁADU BAZY DANYCH PODSTAWOWE KWESTIE BEZPIECZEŃSTWA OGRANICZENIA DOSTĘPU DO DANYCH

SQL w 24 godziny / Ryan Stephens, Arie D. Jones, Ron Plew. Warszawa, cop Spis treści

I. Język manipulowania danymi - DML (Data Manipulation Language). Polecenia INSERT, UPDATE, DELETE

050 SQL ELEMENTY ZAAWANSOWANE. Prof. dr hab. Marek Wisła

CREATE USER

Bazy danych 10. SQL Widoki

Oracle PL/SQL. Paweł Rajba.

Programowanie po stronie serwera w SZBD. Robert A. Kłopotek Wydział Matematyczno-Przyrodniczy. Szkoła Nauk Ścisłych, UKSW

Bloki anonimowe w PL/SQL

Podstawy języka T-SQL : Microsoft SQL Server 2016 i Azure SQL Database / Itzik Ben-Gan. Warszawa, Spis treści

Laboratorium nr 4. Temat: SQL część II. Polecenia DML

Instytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny Technologiczny Politechnika Śląska

Język SQL, zajęcia nr 1

BAZA DANYCH SIECI HOTELI

D D L S Q L. Co to jest DDL SQL i jakie s jego ą podstawowe polecenia?

Bazy danych. Bazy danych. Zapytania SELECT. Dr inż. Paweł Kasprowski.

UPDATE Studenci SET Rok = Rok + 1 WHERE Rodzaj_studiow =' INŻ_ST'; UPDATE Studenci SET Rok = Rok 1 WHERE Nr_albumu IN ( '111345','100678');

Wprowadzenie do projektowania i wykorzystania baz danych Relacje

Trigger jest obiektem związanym z tablicą, który aktywuje się gdy do tablicy następuje odpowiednie zapytanie.

1. Pobierz plik z diagramem związków encji schematu Uczelnia (MS Visio) oraz plik ze skryptem tworzącym tabele i wypełniający je danymi, z zasobu:

Język SQL. Rozdział 9. Język definiowania danych DDL, część 2.

SQL DDL DML TECHNOLOGIE BAZ DANYCH. Wykład 5: Język DDL i DML. Małgorzata Krętowska

PL/SQL. Zaawansowane tematy PL/SQL. Piotr Medoń

SQL Server Łukasz Łysik 21 października 2008

Plan. Formularz i jego typy. Tworzenie formularza. Co to jest formularz? Typy formularzy Tworzenie prostego formularza Budowa prostego formularza

Przykładowa baza danych BIBLIOTEKA

SQL w języku PL/SQL. 2) Instrukcje języka definicji danych DDL DROP, CREATE, ALTER, GRANT, REVOKE

Hurtownia Świętego Mikołaja projekt bazy danych

77. Modelowanie bazy danych rodzaje połączeń relacyjnych, pojęcie klucza obcego.

Instrukcje SQL można podzielić na pięć kategorii, które zostały przedstawione w poniższej tabeli.

Pakiety podprogramów Dynamiczny SQL

P o d s t a w y j ę z y k a S Q L

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

Ile rekordów będzie zawierała tabela przy założeniu, że na początku była pusta?

Język PL/SQL Procedury i funkcje składowane

Bazy danych. Dr inż. Paweł Kasprowski

Procedury wyzwalane. Rozdział 13. Procedury wyzwalane. Cele stosowania procedur wyzwalanych. Definiowanie procedury wyzwalanej DML

Elementy. języka SQL

Wyzwalacze TWORZENIE WYZWALACZY

1 Zaznacz poprawne stwierdzenia dotyczące grup plików (filegroup) możemy określić do której grupy plików trafi

Język PL/SQL. Rozdział 6. Procedury wyzwalane

Procedury i funkcje składowane

Bazy Danych i Usługi Sieciowe

Ogólny plan przedmiotu. Strony WWW. Literatura BAZY DANYCH. Materiały do wykładu:

Język SQL. Rozdział 10. Perspektywy Stosowanie perspektyw, tworzenie perspektyw prostych i złożonych, perspektywy modyfikowalne i niemodyfikowalne.

Program szkoleniowy Efektywni50+ Moduł IV Podstawy relacyjnych baz danych i język SQL

Zarzadzanie transakcjami. Transakcje

Paweł Rajba

Kowalski Marcin Wrocław, dn Jaśkiewicz Kamil Bazy Danych 1 Podstawy Projekt Temat: Baza danych do zarządzania projektami

Oracle11g: Programowanie w PL/SQL

Wyzwalacze (triggery) Przykład

Wykład 5 Charakterystyka języka SQL. Elementy obliczeń relacyjnych.

Transkrypt:

Wykład 5 funkcje i procedury pamiętane widoki (perspektywy) wyzwalacze 2015-12-03 Bazy danych-1 W5 1

Funkcje i procedury pamiętane Następujące polecenie tworzy zestawienie zawierające informację o tym ilu jest na naszej hipotetycznej uczelni studentów, a ile studentek. 2015-12-03 Bazy danych-1 W5 2

W poleceniu tym pojawiła się tzw. funkcja pamiętana. Język SQL umożliwia pamiętanie wraz z danymi (w jednej z systemowych tabel bazy) funkcji i procedur definiowanych przez użytkowników systemu. Funkcje i procedury pamiętane są związane z bazą, a nie z aplikacją. Mogą być wykorzystywane przez różne aplikacje mające dostęp do bazy. Dalej podano przykład ciągu poleceń SQL, za pomocą których zdefiniowano funkcję PlecStud. 2015-12-03 Bazy danych-1 W5 3

2015-12-03 Bazy danych-1 W5 4

CREATE FUNCTION [dbo].[plecstud](@p char(1)) RETURNS char(10) AS BEGIN declare @plec char(10); if @p = 'K' set @plec = 'dziewczyna' else set @plec = 'chłopak' --end; return @plec; END 2015-12-03 Bazy danych-1 W5 5

SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author:<Author,,Name> -- Create date: <Create Date,,> -- Description:<Description,,> -- ============================================= CREATE FUNCTION <Scalar_Function_Name, sysname, FunctionName> ( -- Add the parameters for the function here <@Param1, sysname, @p1> <Data_Type_For_Param1,, int> ) RETURNS <Function_Data_Type,,int> AS BEGIN -- Declare the return variable here DECLARE <@ResultVar, sysname, @Result> <Function_Data_Type,,int> -- Add the T-SQL statements to compute the return value here SELECT <@ResultVar, sysname, @Result> = <@Param1, sysname, @p1> -- Return the result of the function RETURN <@ResultVar, sysname, @Result> END 2015-12-03 Bazy danych-1 W5 6

Oprócz omówionych wcześniej funkcji zagregowanych i funkcji pamiętanych w systemie zarządzania bazą danych wykorzystującym język SQL istnieje zawsze pewna liczba funkcji wbudowanych. Umożliwiają one wykonywanie najczęściej spotykanych w zastosowaniach praktycznych operacji na danych. Następujące przykładowe polecenie pozwala znaleźć informację o liczbie pracowników uczelni zatrudnionych na poszczególnych stanowiskach oraz o ich zarobkach minimalnych, średnich i maksymalnych. 2015-12-03 Bazy danych-1 W5 7

2015-12-03 Bazy danych-1 W5 8

Polecenie to łączy tabele studenci, rejestr, punkty i pozwala sporządzić zestawienie liczby zaliczeń poszczególnych studentów z poszczególnych przedmiotów, minimalnych, średnich i maksymalnych uzyskanych ocen. Funkcja ceiling jest funkcją zdefiniowaną w SQL, która zaokrągla argument do najbliższej liczby całkowitej nie mniejszej niż wartość argumentu. 2015-12-03 Bazy danych-1 W5 9

Definicja funkcji NazwiskoImie 2015-12-03 Bazy danych-1 W5 10

Procedura składowana/pamiętana (ang. stored procedure) jest nazwanym zbiorem zapytań w języku SQL, który jest przechowywany na serwerze (w SZBD) i jest kompilowany przy pierwszym wykonaniu. Procedury wnoszą do środowiska serwera baz danych przetwarzanie warunkowe i możliwości programistyczne. W SZBD wykonanie dowolnego fragmentu kodu języka SQL wiąże się z pewnym ciągiem procesów - począwszy od sprawdzenia składni aż do kompilacji i wykonania. Proces wykonywania zapytania SQL przez SZBD 1. Kod zapytania zostaje sprawdzony pod względem poprawności składni (kontrola poprawności semantycznej - czy kod nie odwołuje się do nieistniejących obiektów lub używa nieistniejących poleceń oraz czy jego składnia jest poprawna). 2. Następnie kod jest rozdzielany na fragmenty (znaczniki) interpretowane przez SZBD. Proces ten nazywa się to ang. parsing. 3. Następnie SZBD standaryzuje wyodrębnione części kodu, tzn. zapisuje je w jednoznacznej postaci (usuwając niepotrzebne znaczniki). 4. Kolejnym etapem jest optymalizacja - każde zapytanie może posiadać wiele przygotowanych tzw. planów wykonania (ang. execution plan). MS SQL Server posiada wewnętrzny proces (Query Optimizer), który wybiera optymalny sposób dostępu do danych - taki plan wykonania zapytania, w którym serwer będzie przeszukiwał najmniejszą liczbę stron danych. Na optymalizację szczególny wpływ ma struktura indeksów oraz sposób łączenia tabel. 5. Następuje kompilacja zapytania wg optymalnego planu wykonania i wykonanie skompilowanego zapytania. 6. Wyniki działania zapytania są zwracane do klienta. 2015-12-03 Bazy danych-1 W5 11

Wykonywanie procedur składowanych Wykonywanie procedur składowanych odbywa się inaczej niż wykonywanie pojedynczych zapytań SQL. Schemat tworzenia i pierwszego wykonania procedury na przykładzie MS SQL Server. 1. Programista bazy danych tworzy definicję procedury składowanej - tzn. wykonuje polecenie CREATE PROCEDURE. 2. Kod procedury jest sprawdzany pod względem składni. 3. Nazwa procedury i jej kod (tzw. ciało) są zapisywane do odpowiednich tabel systemowych bazy danych (sysobjects oraz syscomments). 4. Użytkownik wywołuje procedurę z odpowiednimi parametrami za pomocą polecenia EXEC. 5. Dalej następuje właściwe wykonanie procedury - optymalizacja planu wykonania i kompilacja. 6. Skompilowany optymalny plan wykonania jest zapisywany w tzw. cache'u procedur. W MS SQL Server przy kontroli poprawności kodu procedury w trakcie jej tworzenia serwer nie sprawdza, czy istnieją obiekty (tabele, widoki), do których procedura się odwołuje. Sprawdzenie to następuje dopiero przy wykonaniu procedury (w przypadku odwołania do nieistniejącego obiektu procedura zgłosi błąd). 2015-12-03 Bazy danych-1 W5 12

Definicja procedury dopisującej do tabeli Studenci nowego studenta: -- ============================================= -- Author: <Author,,Name> -- Create date: <Create Date,,> -- Description: <Description,,> -- ============================================= CREATE PROCEDURE [dbo].[nowystudent]( -- Add the parameters for the stored procedure here @Nr int, @Naz char(35), @Im char(35), @adr char(60), @du date, @p char(1)) AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. --SET NOCOUNT ON; insert into Student.dbo.Studenci (num_stud, nazwisko, imie, adres, data_ur, plec) values (@Nr, @Naz, @Im, @adr, @du, @p) END 2015-12-03 Bazy danych-1 W5 13

2015-12-03 Bazy danych-1 W5 14

Przykładowe wywołanie tej procedury: 2015-12-03 Bazy danych-1 W5 15

2. Dopisywanie nowego studenta do tabeli studenci do kolumny plec wstawia M lub K w zależności od ostatniej litery imienia 2015-12-03 Bazy danych-1 W5 16

2015-12-03 Bazy danych-1 W5 17

Widoki (perspektywy) Są to tabele wirtualne tworzone i przechowywane w bazie danych, w których występują odwołania do na ogół więcej niż jednej tabeli. Widok (perspektywa) to logiczny byt (obiekt), osadzony na serwerze bazy danych. Umożliwia dostęp do podzbioru kolumn i wierszy tabeli lub tabel na podstawie zapytania w języku SQL, które stanowi część definicji tego obiektu. Do widoku jako źródła danych należy odwoływać się identycznie jak do tabeli. Operacje wstawiania, modyfikowania oraz usuwania rekordów nie zawsze są możliwe (np. w sytuacji gdy widok udostępnia część kolumn dwóch tabel A oraz B bez kolumny z kluczem głównym tabeli B). W niektórych SZBD widok służy wyłącznie do pobierania wyników i ograniczania dostępu do danych. 2015-12-03 Bazy danych-1 W5 18

2015-12-03 Bazy danych-1 W5 19

Definicja przykładowego widoku łączącego tabele Studenci i Rejestr Przykład użycia widoku Studenci_kursy 2015-12-03 Bazy danych-1 W5 20

Perspektywa lub widok (ang. view) jest wirtualną tabelą - odwzorowaniem globalnego schematu bazy danych na schemat zewnętrzny, przystosowany do potrzeb i przyzwyczajeń konkretnego użytkownika. Perspektywy stosuje się, aby uprościć (sobie lub użytkownikowi) życie. Powodów stosowania perspektyw : Dążenie do uproszczenia z punktu widzenia użytkownika modeli pojęciowych dzięki temu można znacznie uprościć schemat bazy, a tym samym ułatwić użytkownikowi dostęp do danych. Dostosowanie się do punktu widzenia i terminologii dziedziny zastosowań BD zmiana schematu wprowadzana przez perspektywę może być wykorzystana na przykład do dostosowania nazw tabel i kolumn do języka, którym posługuje się użytkownik. Ograniczenie dostępu do obiektów perspektywy powodują ukrycie przez użytkownikiem końcowym prawdziwego schematu bazy danych. Może to mieć również pozytywny wpływ na poprawę bezpieczeństwa danych, gdyż użytkownik nie ma bezpośredniego dostępu do schematu rzeczywistego. Współdziałanie systemów heterogenicznych (wspólny schemat) w wypadku systemów rozproszonych, zbudowanych z różnych systemów baz danych, perspektywa może pomóc w ukryciu różnic. Przystosowanie starszych systemów do nowszych technologii i wymagań. Z punktu widzenia procesów perspektywa powinna być przezroczysta, to znaczy, że można na niej wykonywać takie same operacje, jak na rzeczywistych tabelach. Warunek przezroczystości perspektyw jest bardzo trudny do spełnienia, gdyż dla pewnych odwzorowań danych przyjęte środki definicji perspektyw mogą okazać się niewystarczające. 2015-12-03 Bazy danych-1 W5 21

Korzyści wynikające ze stosowania widoków: - wygoda - ukrywanie efektów normalizacji - ograniczanie dostępu do danych - tworzenie dodatkowej warstwy abstrakcji 2015-12-03 Bazy danych-1 W5 22

Wyzwalacze Wyzwalacze (ang. Triggers) są procedurami składowymi uruchamianymi automatycznie w wyniku zaistnienia określonego zdarzenia. Zdarzeniami jakie mogą wywoływać uruchamianie wyzwalaczy są polecenia modyfikujące tabele w bazie danych, modyfikujące bazy danych, a także inne zdarzenia systemowe w bazie danych. Zwykle wyzwalaczy używa się do sprawdzania poprawności wprowadzanych danych, ale można za pomocą nich uruchomić dowolne procedury. Programując wyzwalacze można wykorzystywać wszystkie wyrażenia SQL dostępne dla procedur składowych. Wyzwalacze nie powinny zwracać danych. Wyzwalacze mogą służyć do stworzenia własnej obsługi błędów i generowania swoich komunikatów, które mogą być później użyte w aplikacji używającej określonej bazy danych. 2015-12-03 Bazy danych-1 W5 23

W systemie MS SQL Server istnieją trzy typy wyzwalaczy: Wyzwalacze DML uruchamiają się gdy użytkownik próbuje modyfikować dane przy pomocy zapytań języka DML (Data Manipulating Language). Są to polecenia INSERT, DELETE i UPDATE na tablicy lub widoku. Wyzwalacze DDL uruchamiają się gdy wywoływane są polecenia języka DDL (Data Definition Language), takie jak polecenia CREATE, ALTER, DROP a także niektóre procedury systemowe. Wyzwalacze Logon uruchamiają się podczas zdarzenia LOGON, gdy użytkownik nawiązuje sesje z bazą danych. 2015-12-03 Bazy danych-1 W5 24

Wyzwalacze DML mogą być inicjowane zdarzeniami modyfikującymi wiersze tabeli lub widoku (polecenia INSERT, DELETE, UPDATE). Wyzwalacze uruchamiają się niezależnie od tego czy dane polecenia mają wpływ na wiersze w tabeli lub widoku. Dla tabel można wywoływać wyzwalacze po i zamiast danego polecenia (AFTER i INSTEAD OF), natomiast dla widoków, tylko zamiast danego polecenia (INSTEAD OF). Wyzwalacze DML służą do wymuszenia różnych reguł biznesowych, sprawdzania integralności danych, tworzenia zapytań do innych tabel oraz uruchamiania dowolnych innych procedur jakie można napisać przy użyciu języka Transact-SQL. Wyzwalacz jak i wyrażenie, które go wywołuje traktowane jest jako jedna transakcja i może być cofnięta z wnętrza wyzwalacza. Jeżeli zostanie wykryty poważny błąd (np. za mało miejsca na dysku) cała transakcja zostaje cofnięta. Od wersji MS SQL Server 2005 możliwe jest uruchomienie wyzwalaczy po oraz zamiast poleceń INSERT, UPDATE i DELETE. Wyzwalacze DML sprawdzają się wtedy, kiedy za pomocą zwykłych więzów integralności nie jesteśmy w stanie zapisać reguł jakie chcemy wprowadzić w bazie danych, np. reguły dotyczące wprowadzania danych w kolumnie mogą odnosić się do innych kolumn, co nie jest możliwe w przypadku klauzuli CHECK. 2015-12-03 Bazy danych-1 W5 25

Wyzwalacze DML korzystają z tabel logicznych (koncepcyjnych) deleted i inserted. Tabele te przechowują dane, które zostały właśnie usunięte lub wstawione przez polecenie inicjujące wyzwalacz. Informacje zawarte w tych tabelach można wykorzystać do sprawdzenia poprawności operacji, która uruchomiła wyzwalacz. Tabele te najczęściej używane są podczas transakcji. Gdy po sprawdzeniu okaże się, że dane są nieprawidłowe wystarczy cofnąć transakcję i wrócić do stanu przed wywołaniem operacji. Wyzwalacze są uruchamiane po sprawdzeniu więzów integralności, więc jeśli zapytanie, które wywołuje dany wyzwalacz wcześniej spowoduje niepoprawność więzów spójności, to wyzwalacz nie uruchomi się w przypadku wyzwalacza wywoływanego z klauzulą AFTER lub wyzwalacz jest cofany jeśli był wykonywany z klauzulą INSTEAD OF. Należy pamiętać, że dodanie nowego wyzwalacza dla danej tabeli powoduje automatyczne usunięcie wyzwalacza istniejącego, jeśli wywołują go te same zdarzenia. 2015-12-03 Bazy danych-1 W5 26

2015-12-03 Bazy danych-1 W5 27

Wyzwalacze wiąże się z następującymi zdarzeniami: INSERT - wyzwalacz jest wywoływany zawsze wtedy, gdy do "jego" tabeli wstawiany jest nowy wiersz, DELETE wtedy, gdy wiersz w odpowiedniej tabeli jest kasowany, UPDATE gdy wiersz jest aktualizowany, UPDATE OF lista_kolumn wtedy gdy wiersz będzie lub został poprawiony tak, że zmieniły się wartości w kolumnach wymienionych na liście. Wyzwalacze można definiować jako wierszowe albo rozkazowe. Wyzwalacze wierszowe mogą działać przed (INSTEAD OF) albo po (AFTER) modyfikacji przez wstawianie, poprawianie lub kasowanie wiersza. Wyzwalacze rozkazowe są wykonywane po wykonaniu całej operacji. Jeżeli pojawi się błąd podczas wykonywania wyzwalacza operacja, która go zapaliła kończy się niepowodzeniem. Serwer może wówczas wysłać do użytkownika odpowiedni komunikat. 2015-12-03 Bazy danych-1 W5 28

Do tworzenia wyzwalaczy służy polecenie create trigger. Usuwanie wyzwalacza z bazy następuje po wydaniu polecenia drop trigger nazwa_wyzwalacza. Poprawić definicję wyzwalacza można za pomocą polecenia alter trigger... Działanie wyzwalacza można zablokować (bez usuwania go z bazy) za pomocą polecenia DISABLE TRIGGER nazwa_wyzwalacza ON własciciel.nazwa_tabeli Nieaktywny wyzwalacz można uaktywnić poleceniem ENABLE TRIGGER nazwa_wyzwalacza ON właściciel.nazwa_tabeli Do przechowywania wyzwalaczy w bazie służą tabele SYS.TRIGGERS oraz SYS.TRIGGER. 2015-12-03 Bazy danych-1 W5 29

Przykład definicji wyzwalacza i działania 2015-12-03 Bazy danych-1 W5 30

2015-12-03 Bazy danych-1 W5 31

Pełna składnia polecenia tworzącego wyzwalacz: CREATE TRIGGER wyzwalacz ON {tabela} [WITH ENCRYPTION] { {{FOR AFTER INSTEAD OF} {[DELETE] [,] [INSERT] [,] [UPDATE]} [WITH APPEND] [NOT FOR REPLICATION] AS instrukcja_sql [ n] } {(FOR AFTER INSTEAD OF) {[INSERT] [,] [UPDATE]} [WITH APPEND] [NOT FOR REPLICATION] AS {IF UPDATE (kolumna) [{AND OR} UPDATE (kolumna)] [ n] IF (COLUMNS_UPDATED () {operator_binarny} maska_uaktualnienia) {operator_porównania} maska [ n] } instrukcja_sql [ n] } } gdzie: AFTER (wartość domyślna) powoduje wywołanie wyzwalacza po pomyślnym zakończeniu wykonywania instrukcji użytkownika, INSTEAD OF powoduje wykonanie wyzwalacza zamiast oryginalnej instrukcji użytkownika. W rezultacie wszystkie zmiany wprowadzone przez użytkownika zostaną zastąpione zmianami wprowadzonymi przez wyzwalacz, [DELETE] [INSERT] [UPDATE] określają instrukcję języka Transact-SQL, której wykonanie wywoła wyzwalacz, WITH APPEND jest opcją używaną wyłącznie w systemach SQL SERVER 6.5 i starszych, NOT FOR REPLICATION powoduje, że wyzwalacz nie będzie wywoływany przez zmiany danych spowodowane ich replikacją, 2015-12-03 Bazy danych-1 W5 32

IF UPDATE powoduje sprawdzanie wykonania instrukcji UPDATE lub INSERT, Wykonanie instrukcji DELETE nie spowoduje wykonania żadnej akcji, IF (COLUMNS_UPDATED()) jest funkcją zwracającą w postaci ciągu bitów informacje o tym, w których kolumnach zmodyfikowano lub dodano dane, operator_binarny jest operatorem porównania wykorzystywanym do odczytania wyniku funkcji COLUMNS_UPDATED(). Lewy, najmniej znaczący bit wyniku, odpowiada pierwszej kolumnie tabeli, maska_uaktualnienia określa, za pomocą liczby całkowitej, które kolumny będą sprawdzane przy pomocy funkcji COLUMNS_UPDATED(), operator_porównania pozwala na sprawdzenie wszystkich (=) lub tylko wybranych (>), określonych poprzez maskę_uaktualnienia, kolumn, maska określa, za pomocą liczby całkowitej, dla których kolumn modyfikacja lub dodawanie danych wywoła określoną akcję. 2015-12-03 Bazy danych-1 W5 33

Przykłady: Tworzymy wyzwalacz sprawdzający, czy zmodyfikowano zawartość wybranych kolumn: I sprawdzamy jego działanie: 2015-12-03 Bazy danych-1 W5 34

Na stronie http://devproconnections.com/sql-server/reasons-avoid-triggers można zapoznać się z opinią na temat używania wyzwalaczy. 2015-12-03 Bazy danych-1 W5 35