90 likes | 222 Vues
BASES DE DATOS II. tipo de datos uniqueidentifier. Fernando Suárez H. Propiedad Identity SQL Server.
E N D
BASES DE DATOS II tipo de datos uniqueidentifier Fernando Suárez H.
Propiedad Identity SQL Server Cuando se insertan valores en una tabla con una columna de identificadores (IDENTITY), el motor de base de datos genera automáticamente el siguiente valor de identidad agregando el incremento al valor de inicialización. No se puede modificar una columna de tabla existente para agregar la propiedad IDENTITY.
Propiedad Identity SQL Server - Características Las tablas sólo pueden contener una columna definida con la propiedad IDENTITY y dicha columna debe definirse con un tipo de datos decimal, int, numeric, smallint, bigint o tinyint. Se pueden especificar los valores de inicialización e incremento. El valor predeterminado es 1 para ambos. La columna de identificadores no debe aceptar valores NULL ni contener ninguna definición ni objeto DEFAULT. Se puede utilizar SET IDENTITY_INSERT para deshabilitar la propiedad IDENTITY de una columna y permitir que se inserten valores de forma explícita.
Propiedad Identity SQL Server - Uso IDENTITY [ (base , incremento) ] USE AdventureWorks2012 IF OBJECT_ID ('dbo.new_employees', 'U') IS NOT NULL DROP TABLE new_employees; GO CREATE TABLE new_employees ( id_numint IDENTITY(1,1), fnamevarchar (20), minitchar(1), lnamevarchar(30) ); INSERT new_employees (fname, minit, lname) VALUES ('Karin', 'F', 'Josephs'); INSERT new_employees (fname, minit, lname) VALUES ('Pirkko', 'O', 'Koskitalo');
Identificadores únicos globales Aunque la propiedad IDENTITY automatice la numeración de las filas de una tabla, dos tablas distintas, cada una con sus propias columnas de identificadores, pueden generar los mismos valores. Esto es debido a que se garantiza que la propiedad IDENTITY es única sólo para la tabla en la que se utiliza. Si una aplicación debe generar una columna de identificadores única para toda la base de datos, use el tipo de datos uniqueidentifier y la función NEWID o NEWSEQUENTIALID(). A diferencia de las columnas definidas con la propiedad IDENTITY, el Motor de base de datos no genera automáticamente valores para una columna de tipo uniqueidentifier.
Identificadores únicos globales El tipo de datos uniqueidentifier almacena valores binarios de 16 bytes que funcionan como identificadores exclusivos globales (GUID). Un GUID es un número binario exclusivo; ningún otro equipo del mundo generará un duplicado de ese GUID.
Identificadores únicos globales - ROWGUIDCOL Se usa para indicar que la nueva columna es una columna de GUID de filas. Con la propiedad ROWGUIDCOL se puede especificar una columna uniqueidentifier para cada tabla.
Identificadores únicos globales – ROWGUIDCOL (ventajas) Tenemos las ventajas siguientes con este enfoque: El UNIQUEIDENTIFIER junto con ROWGUIDCOL NEWSEQUENTIALID () es mucho más eficiente que UNIQUEIDENTIFIER normal junto con NEWID (). Los identificadores únicos generados con el segundo enfoque (ejemplo) es de naturaleza secuencial, similar a los valores IDENTITY. No puede haber un máximo de ROWGUIDCOL para una tabla. Puede consultar la tabla para ROWGUIDCOL. Ejemplo: ROWGUIDCOL SELECT FROM MyTable
Identificadores únicos globales – ROWGUIDCOL (uso) // // Uso de UNIQUEIDENTIFIER con NEWID() // CREATE TABLE MyTable (ID UNIQUEIDENTIFIER PRIMARY KEY DEFAULT NEWID()... En el ejemplo de arriba los identificadores no tienen secuencia. // //Uso de UNIQUEIDENTIFIER con ROWGUIDCOL y NEWSEQUENTIALID() // CREATE TABLE MyTable (ID UNIQUEIDENTIFIER ROWGUIDCOL PRIMARY KEY DEFAULT NEWSEQUENTIALID()... En el ejemplo de abajo los identificadores tienen una secuencia natural.