Insertar ID (autogenerado, solo columna)

¿Cómo debería ser mi statement SQL (MS-SQL) si quiero insert una fila en una tabla, que contiene solo una columna con la identificación autogenerada?

Seguir dos consultas no funcionará:

INSERT INTO MyTable (MyTableId) VALUES (Null) -- or simply INSERT INTO MyTable 

Thx para cualquier tipps. sl3dg3

INSERT INTO MyTable (MyTableId) VALUES (Null) implícitamente intenta insert un nulo en la columna de identidad, por lo que no funcionará ya que las columnas de identidad nunca pueden ser anulables y sin una opción SET no puede insert un valor arbitrario de todos modos, en su lugar puede utilizar:

 INSERT INTO MyTable DEFAULT VALUES 

Para mayor completitud, el estándar SQL y la mayoría de las bases de datos admiten la cláusula DEFAULT VALUES para esto:

 INSERT INTO MyTable DEFAULT VALUES; 

Esto es compatible con

  • CUBRID
  • Firebird
  • H2
  • HSQLDB
  • Ingres
  • PostgreSQL
  • SQLite
  • SQL Server (su database)
  • Sybase SQL Anywhere

Si lo anterior no es compatible, puede escribir esta statement como una solución alternativa:

 INSERT INTO MyTable (MyTableId) VALUES (DEFAULT); 

Esto también funcionará con:

  • Acceso
  • DB2
  • MariaDB
  • MySQL
  • Oráculo

Para más detalles, mira esta publicación del blog aquí:

http://blog.jooq.org/2014/01/08/lesser-known-sql-features-default-values/