numero - select auto_increment mysql
SqlServer crea tabla con MySql como la clave primaria auto_increment (8)
Quiero crear una tabla en SqlServer que agregará, al insertar, una clave primaria autoincrementada. Esto debería ser una identificación autoincrementada similar a la funcionalidad auto_increment de MySql. (Abajo)
create table foo
(
user_id int not null auto_increment,
name varchar(50)
)
¿Hay alguna manera de hacerlo sin crear un desencadenador de inserción?
Como han dicho otros, simplemente configure la opción Identidad.
Como otros han mencionado: agregue el atributo de IDENTIDAD a la columna y conviértalo en una clave principal.
Sin embargo, existen diferencias entre la IDENTIDAD de MSSQL y AUTO_INCREMENT de MySQL:
- MySQL requiere que se defina una restricción única (a menudo en forma de clave principal) para la columna AUTO_INCREMENT.
MSSQL no tiene ese requisito. - MySQL le permite insertar valores manualmente en una columna AUTO_INCREMENT.
MSSQL le impide insertar manualmente un valor en una columna de IDENTIDAD; si es necesario, puede anular esto emitiendo un comando "SET IDENTITY_INSERT tablename ON" antes de la inserción. - MySQL le permite actualizar valores en una columna AUTO_INCREMENT.
MSSQL se niega a actualizar los valores en una columna de IDENTIDAD.
Como se indicó anteriormente, use un campo de IDENTIDAD.
CREATE TABLE foo
(
user_id int IDENTITY(1,1) NOT NULL,
name varchar(50)
)
Han respondido tu pregunta, pero quiero agregar un consejo para que alguien nuevo use las columnas de identidad. Hay momentos en los que debe devolver el valor de la identidad recién insertada para que pueda insertarla en una tabla relacionada. Muchas fuentes le indicarán que use @@ identity para obtener este valor. Bajo ninguna circunstancia debe usar @@ identity si desea mantener la integridad de los datos. Le dará la identidad creada en un desencadenador si uno de ellos se agrega para insertar en otra tabla. Como no puede garantizar que el valor de @@ sea siempre correcto, lo mejor es nunca usar @@ identity. Use scope_identity () para obtener este valor en su lugar. Sé que esto está ligeramente fuera de tema, pero es importante para su comprensión de cómo usar la identidad con SQL Server. Y créeme, no querías solucionar un problema de los registros relacionados que tienen un valor de identidad incorrecto. Esto es algo que puede ir mal durante meses antes de que se descubra y es casi imposible reparar los datos posteriormente.
Me gusta esto
create table foo
(
user_id int not null identity,
name varchar(50)
)
OP solicitó una clave primaria autoincrementada. La palabra clave IDENTITY no hace, por sí misma, que una columna sea la clave principal.
CREATE TABLE user
(
TheKey int IDENTITY(1,1) PRIMARY KEY,
Name varchar(50)
)
Simplemente configure el campo como un campo de identidad .
declara que el campo es identidad