1) Kan jag utföra flera olika saker i varje databasanrop (från ASP, men detsamma gäller väl alla språk..)? Nej på 1 och 3. 2 skulle vara bra om 1 och 3 skulle gå ;) Nr 1 funkar i asp.net+sql iaf. Jag använder den metoden för att lägga till en post och returnera id:et i samma anrop, via två sql-satser. Funkar mot både SQL server och Mysql. 1) 3) Låt oss anta att du skall lösa det med Stored Procedures, och du vill antingen lägga till eller uppdatera ett värde i en tabell:flera saker i samma databasanrop?
T. ex.
INSERT INTO tabell1 (...) VALUES (...); SELECT value1 AS kokk FROM tabell2;
2) Om ja, är det i så fall att föredra framför flera databasanrop från koden?
3) Kan man sätta villkor i SQLen också? Typ för att avgöra om en post i aktuell tabell redan finns för användaren, så att man skall använda ett UPDATE istället för ett INSERT?Sv: flera saker i samma databasanrop?
Du kan bara skicka ett anrop per gång till databasen och det finns inga IF ELSE satser som kan bestämma vad som ska göras. Det närmaste du kommer denna funktionalitet är Stored Procedures, men de finns bara i MySQL 5 och framåt samt MS SQL.Sv: flera saker i samma databasanrop?
Dock vet jag inte hur man ska gå tillväga i asp för att lösa det, om det ens går. Kika i dokumentationen för recordset- eller commandojektet och se vilka metoder som finns för att returnera data.Sv: flera saker i samma databasanrop?
Beror på providern, så utan att veta vad du använder för databas är det svårt att svara på det.
2)
Vet inte om det gör någon skillnad i praktiken, beror säkert på hur providern hanterar det. Men rent spontant känns det som en bra idé om man ser till prestanda. Däremot kanske det ger kod som är svårare att tolka och då känns det helt plötsligt mindre intressant.
3)
Det går i MySQL.
/JohanSv: flera saker i samma databasanrop?
CREATE PROCEDURE spUpdateUser
@username nvarchar(50),
@password nvarchar(20),
@email nvarchar(70)
AS
BEGIN
'-- Börja med att kolla om användarens e-post finns i db
SELECT count(*) FROM tblUsers WHERE email = @email
IF @@ROWCOUNT > 0
BEGIN
'-- Användaren finns, uppdatera
UPDATE tblUsers SET ...
END
ELSE
BEGIN
'-- Användaren finns inte, skapa
INSERT INTO tblUsers ...
END
END