Co mówi tytuł pytania. W zapytaniu takim jak SELECT @@IDENTITY AS ins_id
, czy muszę podać nazwę tabeli lub inne informacje, aby określić, o której tablicy lub bazie mówię?Jak uzyskać identyfikator Wstaw w MSSQL w PHP?
Odpowiedz
@@IDENTITY
zwraca ostatnią tożsamość wygenerowaną w bieżącej sesji. W większości przypadków prawdopodobnie będziesz chciał użyć wartości SCOPE_IDENTITY
, która zwraca ostatnią tożsamość wygenerowaną w bieżącym zakresie.
Na przykład, jeśli wstawić wiersz do tabela1, ale że wkładka wystrzeliwuje spust, który wstawia wiersz do Table2, następnie @@IDENTITY
powróci tożsamości z Table2 natomiast SCOPE_IDENTITY
powróci tożsamości z table1.
INSERT INTO my_table (my_column) VALUES ('test')
-- return the identity of the row you just inserted into my_table
-- regardless of any other inserts made by triggers etc
SELECT SCOPE_IDENTITY() AS ins_id
Nie; działa podobnie jak SELECT LAST_INSERT_ID() w mysql, pobierając ostatnią wstawioną wartość tożsamości. Możesz zajrzeć na stronę this in-depth examination, aby dowiedzieć się więcej o tym, co może Cię zainteresować.
Oto fragment kodu w pewnym stopniu oparty na kodzie Joomla. $ dbh to połączenie z bazą danych (wynik mssql_connect()). Nazwa klucza (ID) jest aktualizowana, jeśli przekazujesz argument $ keyName.
Ten kod używa słowa kluczowego MSSQL "WYJŚCIE", aby uzyskać identyfikator (lub dowolną wymaganą wartość) wstawionej wartości.
function mssql_insertObject($table, &$object, $keyName = NULL)
{
global $dbh;
if($keyName) {
$fmtsql = 'INSERT INTO '. $table .' (%s) OUTPUT INSERTED.' . $keyName . ' VALUES (%s) ';
}
else {
$fmtsql = 'INSERT INTO '. $table .' (%s) VALUES (%s) ';
}
$fields = array();
foreach (get_object_vars($object) as $k => $v) {
if (is_array($v) or is_object($v) or $v === NULL) {
continue;
}
if ($k[0] == '_') { // internal field
continue;
}
$fields[] = $k;
$values[] = "'" . str_replace("'", "''", $v) . "'";
}
$sql = sprintf($fmtsql, implode(",", $fields) , implode(",", $values));
$query = mssql_query($sql, $dbh);
if($query === false) {
return false;
}
if(is_resource($query))
{
if($keyName) {
$id = mssql_result($query, 0, 0);
if($id) {
$object->$keyName = $id;
}
}
mssql_free_result($query);
}
return true;
}
Podoba mi się to rozwiązanie, ponieważ wydaje mi się, że obejmuje ono wszystkie twoje bazy, ponieważ nie możesz uzyskać identyfikatora GUID (pk) z SCOPE_IDENTITY .., ale użycie mssql_result w połączeniu z OUTPUT INSERTED w instrukcji sql działa z pk, które są automatycznie zwiększanymi liczbami całkowitymi lub unikalnymi żądła jak GUID. – greaterKing
- 1. PHP Postgres: Pobierz ostatni identyfikator Wstaw
- 2. Wstaw zmienną php w href
- 3. Wstaw używając PreparedStatement. Jak automatycznie zwiększyć identyfikator?
- 4. Jak znaleźć identyfikator obiektu w PHP?
- 5. Rozszerzenie php mssql na wampie
- 6. Jak uzyskać wybrane pola z kwerendy sp_spaceused w MSSQL
- 7. Jak uzyskać identyfikator pakietu?
- 8. Jak uzyskać identyfikator pola formularza w Django?
- 9. Jak uzyskać identyfikator Reklama w android
- 10. Jak uzyskać identyfikator zadania mapy w Sparku?
- 11. Jak uzyskać identyfikator serii w Highcharts/Highstock
- 12. Jak uzyskać identyfikator wątku w C#
- 13. Jak uzyskać pierwszy nieużywany identyfikator w tabeli?
- 14. Wykonaj polecenie Wstaw i zwróć wstawiony identyfikator w Sql
- 15. Uzyskaj identyfikator grupy użytkowników w Joomla PHP
- 16. MSSQL w python 2.7
- 17. Jak mogę uzyskać zawartość div w php
- 18. Jak uzyskać unikalny identyfikator JVM?
- 19. Jak uzyskać identyfikator wątku jądra?
- 20. Flask - Jak uzyskać identyfikator sesji
- 21. Jak uzyskać aktualny identyfikator użytkownika Prestashop?
- 22. Jak uzyskać bieżący identyfikator procesu?
- 23. Jak uzyskać identyfikator klienta Magento
- 24. Jak mogę uzyskać identyfikator App
- 25. Jak uzyskać wybrany identyfikator opcji?
- 26. Wstaw podzapytanie w Wybierz zapytanie
- 27. Jak połączyć ciąg i GETDATE() w MSSQL
- 28. Jak utworzyć kwerendę cykliczną w MSSQL 2005?
- 29. Użyj metody POST w wyzwalaczu MSSQL
- 30. PHP MYSQL - Wstaw bez nazw kolumn, ale z polem autorekrementacji
Widziałem też: SELECT CAST (COALESCE (SCOPE_IDENTITY(), @@ IDENTITY) AS int) – jjwdesign
dół przydatne. Nie widzę żadnego php, pytanie brzmiało "Jak uzyskać Insert id w MSSQL w PHP". –