Lo que dice el título de la pregunta. Con una consulta como SELECT @@IDENTITY AS ins_id
, ¿necesito proporcionar el nombre de la tabla o cualquier otra información para especificar de qué tabla/base de datos estoy hablando?Cómo obtener Insertar ID en MSSQL en PHP?
Respuesta
@@IDENTITY
devuelve la identidad más reciente generada en la sesión actual. En la mayoría de los casos, probablemente prefiera usar SCOPE_IDENTITY
, que devuelve la identidad más reciente generada en el ámbito actual.
Por ejemplo, si inserta una fila en tabla1, pero esa inserción activa un desencadenador que inserta una fila en tabla2, entonces @@IDENTITY
volverá la identidad de tabla2 mientras que SCOPE_IDENTITY
volverá la identidad de 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
No; funciona de forma muy parecida a SELECT LAST_INSERT_ID() en mysql, recuperando el último valor de identidad insertado. Es posible que desee echar un vistazo a this in-depth examination para obtener más información sobre lo que le puede interesar.
Aquí hay un fragmento de código basado en el código de Joomla. $ dbh es la conexión de la base de datos (resultado de mssql_connect()). El nombre clave (ID) se actualiza si pasa el argumento $ keyName.
Este código usa la palabra clave MSSQL "OUTPUT" para obtener la ID (o cualquier valor requerido) del valor insertado.
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;
}
Me gusta esta solución porque creo que cubre todas tus bases ya que no puedes obtener un GUID (pk) con SCOPE_IDENTITY ... pero usar mssql_result junto con OUTPUT INSERTED en tu instrucción sql funciona con pk que son números enteros incrementados automáticamente o únicos picaduras como GUIDs. – greaterKing
- 1. ¿Cómo puedo insertar 100000 filas en MSSQL?
- 2. Cómo insertar datos binarios en MSSQL usando PDO
- 3. PHP/PDO/MSSQL ¿cómo obtener información de error?
- 4. obtener nuevo ID de registro SQL
- 5. cómo obtener ID de url en cake php
- 6. MSSQL: Sólo última entrada en GROUP BY (con id)
- 7. ¿Cuál es el equivalente de php time() en mssql?
- 8. Insertar id (autogenerado, solo columna)
- 9. PHP Postgres: Obtener último inserto ID
- 10. ¿Cómo insertar una ID única en cada fila de SQLite?
- 11. Cómo insertar texto en un td con id, usando JavaScript
- 12. Obtener sólo la parte Fecha de DateTime en mssql
- 13. ¿Cómo obtener rápidamente Hardware-ID en C#?
- 14. MSSQL en python 2.7
- 15. ¿Cómo hacer que mssql funcione con PHP 5.3?
- 16. PHP MYSQL Insertar/Actualizar
- 17. PHP/MySQL insert row then get 'id'
- 18. cómo insertar en mysql utilizando la declaración preparada con php
- 19. Cómo concatenar una cadena y GETDATE() en MSSQL
- 20. PHP SimpleXML: insertar nodo en cierta posición
- 21. ¿Es posible obtener nuevos valores para Id (IDENTIDAD) antes de insertar datos en una tabla?
- 22. En SQL Server, ¿es posible obtener "id" de un registro cuando se ejecuta Insertar?
- 23. php mysql insertar en utf-8
- 24. Insertar la variable php en un href
- 25. ¿Cómo puedo obtener el ID de la última fila INSERTed usando PDO con SQL Server?
- 26. SQL: ¿Cómo obtener el ID de los valores que acabo de INSERTAR?
- 27. Android/ORMLite Insertar fila con ID
- 28. obtener ID de sesión en ASP.Net
- 29. Última ID (identidad) En Insertar fila VB.NET MySQL
- 30. ¿Por qué EF intenta insertar NULL en la columna id?
También he visto: SELECT CAST (COALESCE (SCOPE_IDENTITY(), @@ IDENTITY) como INT) – jjwdesign
abajo votaron. No veo ningún php, la pregunta era "Cómo obtener Insertar ID en MSSQL en PHP". –