Jag har problem att hämta det senaste ID:t med @@IDENTITY. Jag använder den här koden: Blir det någon skillnad om du testar "SELECT LAST_INSERT_ID() " istället? Har du någon primary key i tabellen? Testa Johans förslag. Jag tror allting måste vara i samma scope , såsom en lagrad procedur Jag har testat LAST_INSERT_ID() med samma resultat. Har googlat ganska mycket på problemet utan framgång. Alla som haft problemet har använt olika connection för insert och hämtning av id, men det gör ju inte du... Det är inte så att du har förenklat kodexemplet och tagit bort något viktigt? Har du testat att köra enklast möjliga kod för att se om det fungerar där? Jag gjorde ett förenklat test och då fungerade det plötsligt. Frågan är nu varför det inte fungerar på min riktiga sida... Jag har inget bra svar, det är väl bara att börja ändra i det förenklade exemplet så att det blir mer och mer likt den riktiga sidan och se när det slutar fungera... Lånar tråden lite. Varför ska man inte använda nån annan filändelse än asp? Man kan få fram källkoden från filen om man inte kör .asp och jag kör själv alltid .asp, skrev bara .inc för att tydliggöra att det var en fil som skulle inkluderas.@@IDENTITY ger 0
<code>
... ansluter till databasen ...
... hämtar data ...
Con.Execute "INSERT INTO Users (x) VALUES (y)"
Set RS = Con.Execute("SELECT @@IDENTITY AS LastID")
</code>
Jag får alltid 0 till svar. Vad kan vara fel?
/ThomasSv: @@IDENTITY ger 0
/JohanSv:@@IDENTITY ger 0
En gissning:
Om @@identity fungerar som i SQL Server så är den sessionsbunden.
Jag gissar att varje Exceute() körs i en egen session.
Din insert syns alltså inte för @@identity.
Som sagt pröva Johans förslag, den kanske går utanför sessioner och scope.Sv: @@IDENTITY ger 0
create procedure myinsert
@namn varchar(100)
as
set nocount on
insert into tabell (namn) values (@namn)
return @@identitySv:@@IDENTITY ger 0
I phpMyAdmin så fungerar koden jag skrev i första inlägget.
/ThomasSv: @@IDENTITY ger 0
/JohanSv:@@IDENTITY ger 0
Ungefär så här ser koden ut:
<code>
<html>
<body>
<% Content() %>
</body>
</html>
<%
Sub Content
%>
<!-- #include virtual="databas.inc" -->
<%
Con.Execute "INSERT..."
Set RS = Con.Execute("SELECT @@IDENTITY AS LastID")
Response.Write RS("LastID")
End Sub
%>
databas.inc innehåller:
<code>
Set Con = Server.CreateObject("ADODB.Connection")
Con.Open "DRIVER=...
</code>
Jag kan inte se att det här borde påverka nått... men uppenbarligen gör det det.
Tips?
/ThomasSv: @@IDENTITY ger 0
Sedan, ett tips, använd ALDRIG någon annan filändelse än .asp för filer med asp-kod (databas.inc).
/JohanSv:@@IDENTITY ger 0
Sv: @@IDENTITY ger 0
/Thomas