Innehållsförteckning
Lagrade procedurer är mycket användbara för att inkapsla databasoperationer och spara utvecklingstid.När du behöver underhålla en databas med många transaktioner och viss sekretess kan du ha ett team av utvecklare som skapar kod utan att veta hur databasen är.
För detta kommer vi att använda lagrade procedurer
Exempel
Vi skapar en databas för en fastighet och en tabell för fastigheter (vi använder få fält för att inte generera omfattande och förvirrande kod)
SKAPA TABELL OM DET INTE FINNS `fastigheter` (` id` int (11) NOT NULL AUTO_INCREMENT, `furnituretype` varchar (100) DEFAULT '0', 'price' decimal (10,2) DEFAULT '0.00', 'description' text, PRIMÄR KEY (`id`)) ENGINE = MyISAM AUTO_INCREMENT = 195 DEFAULT CHARSET = latin1;
Jag skapar en lagrad procedur ny fastighet för att infoga egenskaperna i databasen. När jag definierar den tilldelar jag som en parameter de data som den måste acceptera, i detta fall egenskap, pris och beskrivning, var och en med sitt mysql -format, jag skriver också INSERT -åtgärden
Sedan skapar vi ett html -registreringsformulär för att ange värdena för de nya egenskaperna.
[color = # 000000] Här skickar vi informationen till en fil save.php som kallar den lagrade proceduren och detta sparar data. [/ color]
[color = # 000000] För att göra detta måste vi tidigare ha skapat databasanslutningskoden. [/ color]
[color = # 000000] Vi skapar en fil config.php [/ color]
<? php
// Databasanslutningssträng
$ link = mysql_connect ('localhost', 'user', 'password');
// databasanslutning
om (! $ länk) {
die ('Inte ansluten:'. mysql_error ());
}
// Välj databas
$ db = 'dbInmobiliaria';
om (! mysql_select_db ($ db)) {
die ('Fel:'. mysql_error ());
}?> var13 ->
I bilden kan vi se hur den lagrade proceduren kallas genom SQL -satsen RINGA UPPCALL newinmueble (parameter1, parameter2, …)
Vi skapar en annan lagrad procedur i databasen för att fråga efter egenskapstyp.SKAPA förfarande möbellista (typ varchar (150))
[indent = 1]VÄLJ * FRÅN egendom VAR egenskap LIKE typFörutom att använda den i php kan vi göra frågan från valfri programvara som stöder sql och mysql i det här fallet.
Vi testade den lagrade procedurens fastighetslista efter typ i detta fall från mysql -programvaran Heidisql
RING lista över möbler ('hus')
Resultatet kan ses nedan eftersom det har filtrerats efter fastighetstyp.
Vi kan också skapa en lagrad procedur för att radera data där vi skickar id: t som en parameter
[color = # 000000] SKAPA proceduren ta bort egendom (id -egenskap INT) [/ color]
[color = # 000000]VÄLJ * FRÅN fastigheter WHERE id = fastighets -ID[/Färg]
Sedan kallar vi den lagrade proceduren enligt följande
RING radera egendom (172)
Det intressanta med detta är att om vi vore databasadministratörer för ett mycket komplext system, kunde vi göra tillgängliga för programmerarna endast en lista över procedurer och inte strukturen i databasen, vilket ger större konfidentialitet.
Tillåter dem att interagera med data men inte med strukturen, även att de bara kan läsa men inte ändra. Detta skulle vara ett problem för stora databassystem med många människor som interagerar där säkerhet och sekretess är viktigt.
De mest populära databaserna som stöder lagrade procedurer är mysql, firebird, ms sql -server, oracle, db2 postgresql, sybase (först för att skapa ett databasstransaktionsspråk för sql som heter Transact-SQL).Gillade du och hjälpte denna handledning?Du kan belöna författaren genom att trycka på den här knappen för att ge honom en positiv poäng