Vyer, Prepared Statements, Triggers

Relevanta dokument
9. :new och :old -värden 10. Triggerns olika delar 11. Olika typer av triggrar 12. Kodexempel. Pär Douhan,

Labb LIVE. Exempelkod från föreläsningen. Plushögskolan Frågeutveckling inom MSSQL - SU14

Databasens består av: Tabell Kolumner fält Rader poster (varje post är unik)

Klientprogrammering mot databaser

Databasföreläsning. Del 2 lagrade procedurer, vyer och transaktioner

Karlstads Universitet, Datavetenskap 1

SQL, nästlade delfrågor Nästlade delfrågor. En nästlda delfråga är ett select-from-where uttryck inom where-klausulen i en annan fråga.

Innehåll MySQL Intro. Allmänt om Lagrade Procedurer Enkel utformning Skapa en lagrad procedur Använda parameter som indata

Innehåll Programability Del 2

D1. Create Domain TEXT30 char(30) Default INGET VÄRDE! ;

Sample exam questions. Database exam TIG058

Databasspråket SQL - online.

SQL. Structured Query Language. Frågespråk för att används för. Kommandon. data åtkomst data manipulation

Databasspråket SQL - online.

Du skall naturligtvis visa körexempel med output där det behövs i din rapport!

Databasspråket SQL - online.

Systembeskrivning Sakfrågan

Structured Query Language (SQL)

FNTSK SKNNK Fonetisk sökning

Design och underhåll av databaser

Denna laboration skapades för elever vid Roslagens Högskola men kan användas av vem som helst. Namnen på servrarna måste i så fall ändras.

Databasutveckling Introduktion till SQL och TSQL

Structured query language (SQL)

WCMS-15, Webbutvecklare CMS

TENTAMEN DATABASKUNSKAP ITEK12

Starta MySQL Query Browser

Övningar i SQL. SQLAccess.doc Ove Lundgren

Föreläsning 6: Introduktion av listor

Classpath. Class loading + resurser. Class loader. jar-filer

Tabeller och kolumner SQL. Lägga till en ny post. Lägga till en ny post

SQLs delar. Idag. Att utplåna en databas. Skapa en databas

Databaskunskap 7,5 högskolepoäng Provmoment: Ladokkod: Tentamen ges för:

Idag. 1. Från modell till databasstruktur. 2. Prata med databaser (frågepsråket SQL)

Från verklighet via modell till databas. Idag. Testa reglerna på varuhusmodellen. Från verklighet via modell till databas

Informationssystem och Databasteknik, 2I-1100 HT2001. Relationsalgebra. Relationsalgebran är sluten: R 1 op R 2 R 3.

Kompendium till databaser och informationssystem 10p för SY2 2000

Lösningsförslag, tentamen i Databaser

Transaktioner. 1. Transaktioner 2. Samtidighet ( concurrency ) och lås. 3. Deadlock. Kap. 17. Informatik B: Databashantering med SQL Server

Arbeta med databas. Översikt. Lektion 1: Arbeta med Entity Data Models. Arbeta med Entity Data Models. LINQ (Language Integrated Query).

9. Anonyma block 10. Clean code och läsbarhet 11. Variabeltyper och variabeldeklaration 12. Olika loopar: Basic, while och for loop

Databasspråket SQL - online.

1. PLSQL 2 2. Select into

Genomgång av tentamen. Databasteknik ITHS 4/3 2016

Idag. Hur skapar vi och underhåller en databas? DD1370 (Föreläsning 4) Databasteknik och informationssystem 7,5 hp Hösten / 20

Innehåll. Föreläsning 3. javax.naming.context. javax.sql.datasource. Vad är JDBC? Java Naming and Directory Interface(JNDI) Viktigaste metoder:

Databaser och Datamodellering Foreläsning IV

! Teori och praktik. ! Ändringar från förra året. ! Examination (tenta, projekt) LiU. ! Varför ni? ! Varför överhuvudtaget? LiU

732G16: Databaser - Design och programmering

Jämförelse av Oracle och MySQL med fokus på användning i laborationer för universitetsutbildning

Introduktion till Jasmine 1.2 ODQL

FÖRBERED UNDERLAG FÖR BEDÖMNING SÅ HÄR

Databasspråket SQL - online.

Beijer Electronics AB 2000, MA00336A,

DVA234 Databaser. Dag Nyström, Introduktion till databaser och MS SQL Server

Databasutveckling Microsoft T-SQL - Fortsättning. Funktioner GROUP BY HAVING Skapa databaser Skapa tabeller Lite om transaktioshantering

Tentamen DATABASTEKNIK - 1DL116

DDL Kommandon CREATE/DROP Database CREATE /ALTER/DROP Table ALTER/ADD/DROP Column CREATE /ALTER/DROP Index

1. SQL DML (Data Manipulation Language) 2. Lägga till data. 4. Uppdatera data 5. Aktivera default value 6. Hantera datum 7.

2. Säkerhet 3. Autentisering. 5. Dataintegritet 6. Data privacy 7. PuL 8. Personuppgifter 9. Säkerhetspolicy. Pär Douhan,

Databaser - Design och programmering. Kursöversikt. Exempel: telefonbok. Varför databaser?

Tentamen DATABASTEKNIK - 1DL116

1.Lär känna MS SQL Observera. Tips. Förberedelse

Databaser. Jan Erik Moström, Department of Computing Science, Umeå University - jem@cs.umu.se

Installation av F13 Bråvalla

Tentamen i Databasteknik

Vässa kraven och förbättra samarbetet med hjälp av Behaviour Driven Development Anna Fallqvist Eriksson

Föreläsning 2: Översikt över ett databassystem

Uppstart Inloggning SSMS Skapa Databas Skapa Tabell Skapa Diagram, Fk, RI Hantering av Index, Pk, Fk, Ix Constraints Beräknande fält Några funktioner

Vad är en databas? Exempel på databaser: Databas = Organiserad samling och lagring av information.

ÖVERVAKNING AV SQL SERVER

Skapa en databas. Skapa en tabell. Gör man antingen genom kommandot

L0009B. Moment. Introduktion till geografiska databaser: G:\L0009B\Allmänt\IntroGeoDB.pdf (F)

FÖ 13: Databaskursen. Pär Douhan,

Vad är SQL? Introduktion till SQL

Skapa exempeldatabasen

Att skriva till och läsa från terminalfönstret

Exempel på ett litet Ada-program

Pascal... Pascal. Pascal... Pascal...

Pascal. reserverade ord fördefinierade funktioner och procedurer egendefinierade funktioner, procedurer och objekt

SQL del 2. Christer Stuxberg Institutionen för Informatik och Media

Lär känna MS SQL 2008 / Övning. Observera. Tips. Förberedelse

Transaktioner och samtidighet

2.1 Installation of driver using Internet Installation of driver from disk... 3

Frågespråk och SQL. nikos dimitrakas rum 2423

I denna laboration skriver jag inte ut resultatet på de flesta frågorna utan du kör dem själv i din miljö.

Objektorienterad programmering

Databaser - Design och programmering

Asp.net mvc intro PER KVARNBRINK,

För att XCOPY i SQL Server Express ska fungera måste data och logg ligga i samma mapp, vilket naturligtvis inte är så bra.

Support Manual HoistLocatel Electronic Locks

Disposition. 1. Kopplingen mellan Processanalys (DFDdiagram) 2. Treskikts Client-Server arkitektur (Fig 1.8) 3. Data layer

Föreläsning 10 Datalogi 1 DA2001. Utskrift på skärmen. Syntax. print( Hej ) Hur är det? Hej. print( Hej,end= ) print( Hur är det? ) HejHur är det?

Generiska konstruktioner. Kursbokens kapitel 13

1. SQL DDL (Data Definition Language) 2. Skapa tabell

MySQL. Maths Göthe. 25 februari Inledning Några konventioner Licens... 2

Rättningsmall tenta den 25e oktober Uppgift 1. Uppgift 2. se slides

TDDC30. Kursledning Kursledare: Jonas Lindgren. Labassistent: Jonas Lindgren Labassistent: Niklas Holma Labassistent: Erik Nilsson

Föreläsning 5: Introduktion av pekare

Nya möjligheter med M3 Technology. Björn Svensson, Björn Torold

Transkript:

Vyer, Prepared Statements, Triggers Vyer En vy är en virtuell tabell, som ej behöver existera fysiskt, en namngiven fråga En vy är inte snabbare än SELECT satsen som definierar vyn Det är möjligt att ställa alla typer av förfrågningar till en vy Av logiska skäl är det inte möjligt att stoppa in, ta bort och uppdatera alla typer av rader i en vy Materialiserade vyer lagras fysiskt 1

Vyer Vyer kan användas för att spara vanligt förkommande förfrågningar skräddarsy olika vyer till olika användare efter deras behov begränsa rättigheter för användare Vyer Skapa vy CREATE OR REPLACE VIEW ResearchStaff AS SELECT e.* FROM Employee e, Department d WHERE e.dno = d.dno AND d.name LIKE 'Research'; Fråga vyn SELECT * FROM ResearchStaff WHERE salary > 40000; 2

Materialiserade vyer CREATE TABLE Emp_salary_sum ( sal_sum INT ); INSERT INTO Emp_salary_sum(sal_sum SELECT sum(salary) FROM Employee; Fråga: SELECT * FROM Emp_salary_sum; Prepared statements En fördefinierad fråga När ett prepared statement exekveras för första gången i sessionen, så parsas och planläggs den kan alltså exekvera snabbare än motsvarande statement Prepared statement kan ta parametrar som substitueras vid exekvering. Prepared statements är serverobjekt (sessionen tar slut så försvinner objektet) Tas bort med en DEALLOCATE sats. 3

Prepared statements PREPARE PS_Emp_on_dno_sex (INT, CHAR) AS SELECT e.*, d.name FROM Employee e, Department d WHERE e.dno=d.dno AND d.dno = $1 AND sex = $2; Exekvering: EXECUTE PS_Emp_on_dno_sex (11, 'M'); Avallokering: DEALLOCATE PS_Emp_on_dno_sex ; Aktiva databaser: Triggers Vid inläggning/uppdatering/borttagning av data ytterligare uppdrag kan behöva utföras för att garantera att databasen är logiskt sammanhängande (consistent) Händelse (som triggar åtgärd) kan vara: INSERT/UPPDATE/DELETE Villkor Åtgärd 4

Triggers Exempel på situationer Vid händelsen ta bort en (aktiv) kund ur en tabell Customer, lägg till motsvarande information i en tabell Old_Customer Uppdatera data i en materialiserad vy (härlett data som vi av någon anledning inte vill beräkna vid varje fråga); t.ex. total försäljning Triggers Triggern kan definieras att exekveras före/efter operationerna INSERT, UPDATE, eller DELETE En gång per modifierad rad eller en gång per SQL sats PostgreSQL Triggern måste kopplas till en funktion skriven i ett procedurellt språk, t.ex. PLPGSQL 5

Triggers i PostgreSQL Syntax, PostgreSQL: CREATE TRIGGER <namn> { BEFORE AFTER } { event [ OR... ] } ON <tabellnamn> [ FOR [ EACH ] { ROW STATEMENT } ] EXECUTE PROCEDURE <funktionsnamn> ( <argument> ) NEW och OLD refererar till raden som triggade, före resp. efter uppdateringen BEFORE trigger: RETURN NULL => uppdateringen som triggade skippas Triggers i PostgreSQL Förutsättning: Employee (eno, name,, dno) Department (dno, name, tot_salary) Department.tot_salary ska uppdateras vid INSERT, UPDATE och DELETE på Employee 6

Triggers i PostgreSQL INSERT CREATE OR REPLACE FUNCTION update_tot_salary_on_insert() RETURNS TRIGGER AS $$ UPDATE Department SET tot_salary = tot_salary + NEW.salary WHERE Department.dno = NEW.dno; RETURN NEW; $$ LANGUAGE PLPGSQL; CREATE TRIGGER update_tot_salary_on_insert_trigger AFTER INSERT ON Employee FOR EACH ROW EXECUTE PROCEDURE update_tot_salary_on_insert(); Triggers i PostgreSQL UPDATE CREATE OR REPLACE FUNCTION update_tot_salary_on_update() RETURNS TRIGGER AS $$ UPDATE Department SET tot_salary = tot_salary - OLD.salary + NEW.salary WHERE Department.dno = NEW.dno; RETURN NEW; $$ LANGUAGE PLPGSQL; CREATE TRIGGER update_tot_salary_on_update_trigger AFTER UPDATE OF salary ON Employee FOR EACH ROW EXECUTE PROCEDURE update_tot_salary_on_update(); 7

Triggers i PostgreSQL DELETE CREATE OR REPLACE FUNCTION update_tot_salary_on_delete() RETURNS TRIGGER AS $$ UPDATE Department SET tot_salary = tot_salary - OLD.salary WHERE Department.dno = OLD.dno; RETURN NULL; $$ LANGUAGE PLPGSQL; CREATE TRIGGER update_tot_salary_on_delete_trigger AFTER DELETE ON Employee FOR EACH ROW EXECUTE PROCEDURE update_tot_salary_on_delete(); Triggers i PostgreSQL CREATE TABLE emp ( empname text, salary integer, last_date timestamp, last_user text );... CREATE FUNCTION emp_stamp() RETURNS trigger AS $emp_stamp$... $emp_stamp$ LANGUAGE PLPQSQL; CREATE TRIGGER emp_stamp BEFORE INSERT OR UPDATE ON emp FOR EACH ROW EXECUTE PROCEDURE emp_stamp(); 8

Triggers i PostgreSQL CREATE FUNCTION emp_stamp() RETURNS trigger AS $emp_stamp$ -- Check that empname and salary are given IF NEW.empname IS NULL THEN RAISE EXCEPTION 'empname cannot be null'; END IF; IF NEW.salary IS NULL THEN RAISE EXCEPTION '% cannot have null salary', NEW.empname; END IF; -- Who works for us when she must pay for it? IF NEW.salary < 0 THEN RAISE EXCEPTION '% cannot have a negative salary', NEW.empname; END IF; -- Remember who changed the payroll when NEW.last_date := current_timestamp; NEW.last_user := current_user; RETURN NEW; $emp_stamp$ LANGUAGE PLPQSQL; 9