RESTRICCION E INDICE

22/11/2004 - 15:03 por Oscar | Informe spam
En SQL Server. Cuando se define una clave
candidata con UNIQUE ¿Qué diferencia hay entre
elegir “restricción” o “índice”?

A parte de poner la soluccion aquí lo agradeceria q me la mandarias a
oscarvianes@hotmail.com.

MUCHAS GRACIAS
 

Leer las respuestas

#1 Maxi
22/11/2004 - 15:07 | Informe spam
Hola, primero te voy a responder aca asi todos se benefician :)

Te cuento, esta pregunta se hizo hace unos dias y nuestra amiga Liliana
Sorrentino la ha contestado asi:

==
Hola Jose Luis,
Si no necesitás tener ordenado un dato, pero sí querés controlar que sea
único, la restricción es lo indicado, que además permite nulos.

Acá te mando un ejemplo de cómo funciona 'Pasar por alto claves duplicadas'

drop table Tabla1
GO

CREATE TABLE Tabla1
(nro smallint NOT NULL ,
nombre char(30) NOT NULL ,
ss char(10) NOT NULL)
GO

CREATE UNIQUE INDEX Tabla1_idx ON Tabla1(nro) WITH IGNORE_DUP_KEY
GO

insert Tabla1
select 1, 'Juan', 10 union all
select 2, 'Luis', 20 union all
select 1, 'Martin', 30
select * from tabla1

Servidor: mensaje 3604, nivel 16, estado 1, línea 2
Clave duplicada omitida.
nro nombre ss
-
1 lili 10
2 lili 20


drop table Tabla1
GO

CREATE TABLE Tabla1
(nro smallint NOT NULL ,
nombre char(30) NOT NULL ,
ss char(10) NOT NULL)
GO

CREATE UNIQUE INDEX Tabla1_idx ON Tabla1(nro)
GO

insert tabla1
select 1, 'Juan', 10 union all
select 2, 'Luis', 20 union all
select 1, 'Martin', 30
select * from tabla1

Servidor: mensaje 2601, nivel 14, estado 3, línea 2
No se puede insertar una fila de claves duplicadas en el objeto 'Tabla1' con
índice único 'Tabla1_idx'.
Se terminó la instrucción.
nro nombre ss
-


"Jose Luis" escribió en el mensaje
news:#
En una tabla, (facturas en este caso), he creado un indice unico por los
campos Serie y NumFactura, la duda me surge en las opciones que tiene la
ventana de creacion de indices del Enterprise Manager, en concreto al


crear
un indice UNIQUE tienes dos opciones: Restricción y Indice.
Que diferencia hay entre estas dos opciones ?
Si elijo la opcion indice ademas puedo marcar la casilla 'Pasar por alto
claves duplicadas'
Que significa esta nueva opcion?.
Que ignora las filas de la tabla con clave duplicada.y las desecha sin
ningun mensaje de error.?
O las incuye en la tabla pero no en el indice.?

No acabo de aclararme con estas opciones, hasta que empece con mssql un
indice unico era eso 'un indice unico' y ya esta., si el usuario o un
proceso intenta modificar o insertar una fila que crea un duplicado, la


base
de datos envia un error al programa acerca de este error que el


programador
(yo) debe tratar en su aplicacion, asi de sencillo.

Podria alguien aclararme este tema.?

Gracias.










Salu2
Maxi


"Oscar" escribió en el mensaje
news:
En SQL Server. Cuando se define una clave
candidata con UNIQUE ¿Qué diferencia hay entre
elegir "restricción" o "índice"?

A parte de poner la soluccion aquí lo agradeceria q me la mandarias a


MUCHAS GRACIAS

Preguntas similares