¿Cómo hacer que auto increment
la primary key
de una SQL Server
tabla de base, he tenido una mirada a través del foro, pero no puedo ver cómo.
He buscado las propiedades pero no puedo ver una opción, he visto una respuesta donde vas a la Identity
propiedad de especificación y la configuras en sí y la configura Identity increment
en 1, pero esa sección está atenuada y no puedo cambiar el no al si.
Debe haber una manera simple de hacer esto, pero no puedo encontrarlo.
sql-server
sql-server-2012
identity
Ledgemonkey
fuente
fuente
Respuestas:
Asegúrese de que el tipo de datos de la columna Clave sea
int
y luego configure la identidad manualmente, como muestra la imagenO simplemente ejecuta este código
se ejecutará el código, si
ID
no es la única columna en la tablaimagen de referencia fifo
fuente
IDENTITY
propiedad podría ser aplicado a cualquier tipo de datos numéricos (lo que podría sertinyint
,smallint
,int
,bigint
,numeric
,decimal
), la única restricción es que no podía representar número fraccionario (por lo que no puede serfloat
nireal
, tampoconumeric
, odecimal
con escala distinta de cero ) y ofc, la especificación de identidad debe ser compatible con el tipo de datos seleccionado.Cuando crea la tabla, puede crear una
IDENTITY
columna de la siguiente manera:La
IDENTITY
propiedad incrementará automáticamente la columna desde el número 1. (Tenga en cuenta que el tipo de datos de la columna debe ser un número entero). Si desea agregar esto a una columna existente, use unALTER TABLE
comando.Editar:
Probado un poco, y no puedo encontrar una manera de cambiar las propiedades de Identidad a través de la ventana Propiedades de columna para varias tablas. Supongo que si quieres convertir una columna en una columna de identidad, DEBES usar un
ALTER TABLE
comando.fuente
Debe expandir la sección Identidad para exponer el incremento y la inicialización.
Editar: supuse que tendría un tipo de datos entero, no char (10). Lo cual es razonable, diría, y válido cuando publiqué esta respuesta
fuente
yes
está atenuado como estáchar(10)
(del comentario recién publicado)BookID int primary key identity
, no especifiqué tanto semilla como incremento, ¿es una buena práctica? porque veo documentación en MSDN Si no se especifica ninguno, el valor predeterminado es (1,1).Expanda su base de datos, expanda su tabla, haga clic derecho en su tabla y seleccione el diseño del menú desplegable.
Ahora vaya a las propiedades de la columna a continuación, desplácese hacia abajo y encuentre la Especificación de identidad , amplíelo y encontrará ¿Es la identidad? Sí. Ahora elija Incremento de identidad justo debajo de él para dar el valor que desea incrementar en él.
fuente
Tal vez me estoy perdiendo algo, pero ¿por qué esto no funciona con el objeto SECUENCIA? ¿No es esto lo que estás buscando?
Ejemplo:
Al hacer referencia a la secuencia en decir un comando INSERTAR simplemente use:
Más información y opciones para SECUENCIA
fuente
IDENTITY
veces salta dejando huecos y luego vuelve a llenar esos huecos nuevamente. PorIDENTITY
lo tanto , no garantiza SIEMPRE la condiciónCuando usa el Tipo de datos: int puede seleccionar la fila que desea aumentar automáticamente e ir a la etiqueta de propiedades de la columna. Allí puede establecer la identidad en 'sí'. El valor inicial para autoincremento también se puede editar allí. Espero poder ayudar;)
fuente
Tuve este problema en el que ya había creado la tabla y no podía cambiarla sin soltar la tabla, así que lo que hice fue: (No estoy seguro de cuándo implementaron esto, pero lo tuve en SQL 2016)
Haga clic derecho en la tabla en el Explorador de objetos:
Script Table as > DROP And CREATE To > New Query Editor Window
Luego haga la edición del guión dicho por Josien; desplácese hasta la parte inferior donde
CREATE TABLE
está, encuentre su Clave primaria y agregueIDENTITY(1,1)
hasta el final antes de la coma. Ejecutar guión.El script DROP and CREATE también fue útil para mí debido a este problema. (Que maneja el script generado).
fuente
Tenga cuidado, como si desea que los elementos de ID sean contigius o no. Como SQLSERVER ID puede saltar en 1000.
Examen: antes de reiniciar ID = 11 después de reiniciar, inserte una nueva fila en la tabla, luego la identificación será 1012.
fuente
Puede usar la palabra clave
IDENTITY
como tipo de datos para la columna junto con laPRIMARY KEY
restricción al crear la tabla.ex:
Aquí el primer '1' significa el valor inicial y el segundo '1' es el valor incremental.
fuente
El servidor MS SQL utiliza la palabra clave IDENTITY para realizar una función de incremento automático.
En el ejemplo anterior, el valor inicial para IDENTITY es 1, y se incrementará en 1 para cada nuevo registro.
Consejo: Para especificar que la columna "Personid" debe comenzar en el valor 10 e incrementarse en 5, cámbiela a IDENTITY (10,5).
Para insertar un nuevo registro en la tabla "Personas", NO tendremos que especificar un valor para la columna "Personid" (se agregará automáticamente un valor único):
fuente
Si la tabla ya está poblada, no es posible cambiar una columna a la columna IDENTIDAD o convertirla a una columna sin IDENTIDAD. Debería exportar todos los datos, luego puede cambiar el tipo de columna a IDENTIDAD o viceversa y luego volver a importar los datos. Sé que es un proceso doloroso, pero creo que no hay alternativa, excepto el uso de la secuencia como se menciona en esta publicación.
fuente
ALTER TABLE ... SWITCH
para cambiar los metadatos sin tener que tocar los datos. Por ejemplo, ¿cómo configurar el incremento automático después de crear una tabla sin pérdida de datos?