denciso , Soy una persona multifacética, tanto manejo la informática,...
Cada administrador de bases de datos es diferente, en el caso de sql server se utiliza identity. IDENTITY (Propiedad) Crea una columna de identidad en una tabla. Esta propiedad se utiliza con las instrucciones CREATE TABLE y ALTER TABLE de Transact-SQL. Nota La propiedad IDENTITY no es la misma que la propiedad Identity de SQL-DMO que expone la propiedad de identidad de las filas de una columna. Sintaxis IDENTITY [ ( seed , increment ) ] Argumentos Seed Es el valor que se utiliza para la primera fila cargada en la tabla. Increment Se trata del valor incremental que se agrega al valor de identidad de la anterior fila cargada. Es necesario especificar la inicialización y el incremento, o no especificar ninguno de los dos. Si no se especifica ninguno, el valor predeterminado es (1,1). Observaciones Si hay una columna de identidad para una tabla en la que se realizan eliminaciones frecuentemente, pueden quedar espacios entre los valores de identidad. Si esto constituye un problema, no utilice la propiedad IDENTITY. Sin embargo, para asegurarse de que no se han creado espacios o para rellenar un espacio existente, evalúe los valores de identidad existentes antes de escribir uno explícitamente con SET IDENTITY_INSERT con valor ON. Si vuelve a utilizar un valor de identidad eliminado, utilice el código del ejemplo B para comprobar el siguiente valor de identidad disponible. Sustituya tablename, column_type, y max(column_type) - 1 por el nombre de la tabla, tipo de datos de la columna de identidad y valor numérico del valor máximo permitido (para ese tipo de dato) -1. Utilice DBCC CHECKIDENT para comprobar el valor de identidad actual y compararlo con el valor máximo de la columna de identidad. ¿Cuándo se utiliza la propiedad IDENTITY con CREATE TABLE, Microsoft® SQL Server? Utiliza la opción NOT FOR REPLICATION de CREATE TABLE para suplantar el incremento automático de una columna de identidad. Normalmente, SQL Server asigna a cada nueva fila insertada en una tabla un valor que contiene un incremento mayor que el valor anterior más alto. Sin embargo, si las nuevas filas están duplicadas desde otro origen de datos, los valores de identidad deben permanecer exactamente como eran en el origen de datos. Ejemplos A. Utilizar la propiedad IDENTITY con CREATE TABLE En este ejemplo se crea una nueva tabla con la propiedad IDENTITY para un número de identificación de incremento automático. USE pubs IF EXISTS(SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'new_employees') DROP TABLE new_employees GO CREATE TABLE new_employees ( id_num int IDENTITY(1,1), fname varchar (20), minit char(1), lname varchar(30) ) INSERT new_employees (Fname, minit, lname) Values ('Karin', 'F', 'Josephs') INSERT new_employees (Fname, minit, lname) Values ('Pirkko', 'O', 'Koskitalo') B. Utilizar la sintaxis genérica para buscar espacios entre valores de identidad En este ejemplo se muestra la sintaxis genérica utilizada para buscar espacios en valores de identidad cuando se han eliminado datos. Nota La primera parte de la secuencia de comandos de Transact-SQL se ha diseñado solamente para ser mostrada como ejemplo. Puede ejecutar la secuencia de comandos de Transact-SQL que comienza con el comentario: - - Create the img table (cree la tabla img). -- Here is the generic syntax for finding identity value gaps in data. -- This is the beginning of the illustrative example. SET IDENTITY_INSERT tablename ON DECLARE @minidentval column_type DECLARE @nextidentval column_type SELECT @minidentval = MIN(IDENTITYCOL) FROM tablename IF @minidentval = IDENT_SEED('tablename') SELECT @nextidentval = MIN(IDENTITYCOL) + IDENT_INCR('tablename') FROM tablename t1 WHERE IDENTITYCOL BETWEEN IDENT_SEED('tablename') AND MAX(column_type) AND NOT EXISTS (SELECT * FROM tablename t2 WHERE t2.IDENTITYCOL = t1.IDENTITYCOL + IDENT_INCR('tablename')) ELSE SELECT @nextidentval = IDENT_SEED('tablename') SET IDENTITY_INSERT tablename OFF -- Here is an example to find gaps in the actual data. -- The table is called img and has two columns: the first column -- called id_num, which is an increasing identification number, and the -- second column called company_name. -- This is the end of the illustration example. -- Create the img table. -- If the img table already exists, drop it. -- Create the img table. IF EXISTS(SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'img') DROP TABLE img GO CREATE TABLE img (id_num int IDENTITY(1,1), company_name sysname) INSERT img(company_name) VALUES ('New Moon Books') INSERT img(company_name) VALUES ('Lucerne Publishing') -- SET IDENTITY_INSERT ON and use in img table. SET IDENTITY_INSERT img ON DECLARE @minidentval smallint DECLARE @nextidentval smallint SELECT @minidentval = MIN(IDENTITYCOL) FROM img IF @minidentval = IDENT_SEED('img') SELECT @nextidentval = MIN(IDENTITYCOL) + IDENT_INCR('img') FROM img t1 WHERE IDENTITYCOL BETWEEN IDENT_SEED('img') AND 32766 AND NOT EXISTS (SELECT * FROM img t2 WHERE t2.IDENTITYCOL = t1.IDENTITYCOL + IDENT_INCR('img')) ELSE SELECT @nextidentval = IDENT_SEED('img') SET IDENTITY_INSERT img OFF Véase también Alter table Create table DBCC CHECKIDENT IDENT_INCR @@identity IDENTITY (Función) IDENT_SEED SELECT SET IDENTITY_INSERT ©1988-2000 Microsoft Corporation. Reservados todos los derechos. Baja los libros en línea de sql server si no los tienes de la página de microsoft.
el 29 jun. 05