2011-08-16 10 views

Respuesta

39
INSERT INTO my_table VALUES() 
+1

Esta es en realidad la respuesta correcta para MySQL. –

+1

Trabajando con mariadb también - 10.0.31-MariaDB – MarcoZen

9

En SQL Server es así.

insert into TableName default values 
+1

+1 Hehe me ganó 2 segundos :) Cheers – Andomar

+1

+1 porque funciona también con Sqlite. – ceving

+0

Esto no funcionó para mí con MySQL, y la pregunta era sobre MySQL (ver etiquetas). ¿O hice algo mal y esta sintaxis generalmente también funciona en MySQL? –

1

Puede utilizar default values:

insert YourTable default values 
5

La forma correcta es proporcionar una lista de valores de vacío y dejar que los campos toman sus valores por defecto de forma implícita:

INSERT INTO `table`() VALUES(); 

Alternativamente Puede usar la palabra clave DEFAULT:

INSERT INTO `table` (`Col1`, `Col2`, ...) VALUES(DEFAULT, DEFAULT, ...); 

O (asumiendo que usted está dando valores para todas las columnas) justo:

INSERT INTO `table` VALUES(DEFAULT, DEFAULT, ...); 

Toda la información necesaria se puede encontrar en the documentation for INSERT:

Si no especifique una lista de nombres de columna para INSERTAR ... VALORES o INSERTAR ... SELECCIONAR, los valores para cada columna en la tabla deben ser proporcionado por la lista VALUES o la instrucción SELECT. Si no conoce el orden de las columnas en la tabla, use DESCRIBIR tbl_name al entérese.

[..]

Si no se está ejecutando en modo estricto SQL, cualquier columna no explícitamente dado un valor se establece en su valor (explícito o implícito) por defecto. Para ejemplo, si especifica una lista de columnas que no nombra todas las columnas en la tabla, las columnas sin nombre se establecen en sus valores predeterminados. La asignación de valores predeterminados se describe en la Sección 10.1.4, "Tipo de datos Valores predeterminados". Consulte también la Sección 1.8.6.2, "Restricciones en datos inválidos".

[..]

Usar la palabra clave DEFAULT para establecer una columna de forma explícita a su valor por defecto . Esto hace que sea más fácil escribir instrucciones INSERT que asignen valores a todas menos unas pocas columnas, porque le permite evitar escribiendo una lista VALUES incompleta que no incluye un valor para en cada columna de la tabla. De lo contrario, tendría que escribir la lista de los nombres de columna correspondientes a cada valor en la lista VALORES.

[..]

Si tanto la lista de columnas y la lista VALUES están vacías, INSERT crea una fila con cada columna se establece en su valor por defecto:

INSERT INTO tbl_name() VALUES(); 

[..]

En modo estricto , se produce un error si alguna columna no tiene un valor predeterminado . De lo contrario, MySQL usa el valor implícito predeterminado para cualquier columna que no tenga un valor predeterminado explícitamente definido.

+0

'INSERT INTO table_name DEFAULT' no funciona en MySQL. Use 'INSERT INTO table_name VALUES()' en su lugar. – izogfif

+0

'MOSTRAR VARIABLES COMO 'sql_mode';' da 'STRICT_TRANS_TABLES, ERROR_FOR_DIVISION_BY_ZERO, NO_AUTO_CREATE_USER, NO_ENGINE_SUBSTITUTION', así que creo que es el modo SQL Strict. Cuando ejecuto la consulta 'INSERT INTO table_name DEFAULT;' da error 'SQL Error (1064): tiene un error en su sintaxis SQL; verifique el manual que corresponde a su versión del servidor MySQL para la sintaxis correcta para usar cerca de 'DEFAULT' en la línea 1'. He señalado que ha dado dos alternativas y la primera no funciona en el caso de MySQL. – izogfif

+0

@izogfif: Eso parece ser exacto, gracias –

Cuestiones relacionadas