9
TIPO DE DATOS UNIQUEIDENTIFIER BASES DE DATOS II Fernando Suárez H.

TIPO DE DATOS UNIQUEIDENTIFIER BASES DE DATOS II Fernando Suárez H

Embed Size (px)

Citation preview

Page 1: TIPO DE DATOS UNIQUEIDENTIFIER BASES DE DATOS II Fernando Suárez H

TIPO DE DATOS UNIQUEIDENTIFIER

BASES DE DATOS II

Fernando Suárez H.

Page 2: TIPO DE DATOS UNIQUEIDENTIFIER BASES DE DATOS II 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.

Page 3: TIPO DE DATOS UNIQUEIDENTIFIER BASES DE DATOS II Fernando Suárez H

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.

Page 4: TIPO DE DATOS UNIQUEIDENTIFIER BASES DE DATOS II Fernando Suárez H

Propiedad Identity SQL Server - Uso

IDENTITY [ (base , incremento) ]USE AdventureWorks2012IF OBJECT_ID ('dbo.new_employees', 'U') IS NOT NULL DROP TABLE new_employees;GOCREATE 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');

Page 5: TIPO DE DATOS UNIQUEIDENTIFIER BASES DE DATOS II Fernando Suárez H

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.

Page 6: TIPO DE DATOS UNIQUEIDENTIFIER BASES DE DATOS II Fernando Suárez H

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.

Page 7: TIPO DE DATOS UNIQUEIDENTIFIER BASES DE DATOS II Fernando Suárez H

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.

Page 8: TIPO DE DATOS UNIQUEIDENTIFIER BASES DE DATOS II Fernando Suárez H

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

Page 9: TIPO DE DATOS UNIQUEIDENTIFIER BASES DE DATOS II Fernando Suárez H

Identificadores únicos globales – ROWGUIDCOL (uso)

//// Uso de UNIQUEIDENTIFIER con NEWID()//CREATE TABLE MyTable (ID UNIQUEIDENTIFIER PRIMARY KEY DEFAULT NEWID()...

////Uso de UNIQUEIDENTIFIER con ROWGUIDCOL y NEWSEQUENTIALID()//CREATE TABLE MyTable (ID UNIQUEIDENTIFIER ROWGUIDCOL PRIMARY KEY DEFAULT NEWSEQUENTIALID()...

En el ejemplo de arriba los identificadores no tienen secuencia.

En el ejemplo de abajo los identificadores tienen una secuencia natural.