# MSSQL @@IDENTITY richtig anwenden?



## Dolphon (16. März 2010)

Hi,

ich würde gerne von dem gerade eingetragenen Datensatz die IDENTITY herausbekommen. Unter MYSQL gibt es ja eine extra Funtkion dafür. Unter MSSQL gibt es @@IDENTITY oder auch scope_identity().

Leider habe ich damit Probleme die Daten des gerade eingelesen Datensatzes direkt nach dem Insert wieder auszugeben. 

```
Fehelermeldung: odbc_result(): No tuples available at this result index in
```
Hier das Beispiel:


```
if ($dsn=="flsincsql") { //wenn es sich um MSSQL handelt
		$sqlset="set dateformat YMD";  
		$xx=odbc_exec($conn,$sqlset);
		$sqlins="INSERT INTO Incidents (Incident,Aktion,Aufwand,Datum,Vermerk,Kategorie,Bearbeiter,Reklamation,Incidentstatus,[Direktlösung],[Rekla gerechtfertigt]) values ('".$incident."','".$aktion."','".$aufwand."','".$setdate."','".$vermerk."','".$kategorie."','".$nimbusid."',".$reklset.",'".$status."',".$direktset.",".$reklgerechtset.");
		SELECT * FROM Incidents WHERE (ID = @@IDENTITY)";
	}else{ //ansonsten Access
		$sqlins="INSERT INTO Incidents (Incident,Aktion,Aufwand,Datum,Vermerk,Kategorie,Bearbeiter,Reklamation,Incidentstatus,[Direktlösung],[Rekla gerechtfertigt]) values ('".$incident."','".$aktion."','".$aufwand."','".$setdate."','".$vermerk."','".$kategorie."','".$nimbusid."',".$reklset.",'".$status."',".$direktset.",".$reklgerechtset.")";
	}
	
	$resins=odbc_exec($conn, $sqlins)or die("Datensatz konnte nicht gespeichert werden<br>".odbc_error($conn)." - ".odbc_errormsg($conn).""); 
	
	echo "<h2>Incident ".$incident." wurde erfolgreich eingetragen</h2>";
	
	
	if ($dsn=="flsincsql") {
		//$sql="SELECT * FROM Incidents WHERE Bearbeiter='".$bearbeiter."' AND Datum LIKE '".$setdate."%'";
		$result=$resins;
		
	}else{
		$sql="SELECT * FROM Incidents WHERE Bearbeiter='".$bearbeiter."' AND Datum=#".$setdate."#";
		$result=odbc_exec($conn,$sql);
	}
......
echo "<td>".odbc_result($result,"Incident")."</td>";
......
```

Für einen Tip wäre ich dankbar!


----------



## Yaslaw (16. März 2010)

LAST_INSERT_ID()
http://dev.mysql.com/doc/refman/5.5/en/information-functions.html#function_last-insert-id

Nachtrag:
Sorry, unter MySQL hast du es ja... und MSSQL kann ich nicht


----------



## Alex F. (16. März 2010)

Im MSSQL wäre es :

```
SELECT ID = @@IDENTITY
```
oder wenn du es mit ScopeIdentity machen möchtest

```
SELECT SCOPE_IDENTITY() AS [SCOPE_IDENTITY]
```


----------

