indice por 5 campos en sql 2000

31/07/2006 - 02:15 por Jose | Informe spam
Esyimados(as). Quiero generar un indice de 5 campos de mi tabla como primary
key. Pero al intentar hacerlo me dice que no puede insertar un null en tal
campo. Yo le tengo deshabilitado la opcion de nno aceptar nulos pero si le
coloco nulos dice que no es posiple por ser primary key. Entonces no
entiendo.
Que debo hacer?
Gracias de antemano.

Preguntas similare

Leer las respuestas

#1 Gustavo Larriera \(MVP\)
31/07/2006 - 05:02 | Informe spam
Una llave primaria no admite valores nulos, ni desde el punto de vista
teórico ni tampoco en la implementación de SQL Server.

Lo que puedes hacer es implementar una restricción UNIQUE que sí admite
valores nulos (aunque solamente un valor nulo por columna).

Gustavo Larriera, MVP
Mentor, Solid Quality Learning
Blog: http://solidqualitylearning.com/blogs/glarriera/


"Jose" wrote in message
news:
Esyimados(as). Quiero generar un indice de 5 campos de mi tabla como
primary key. Pero al intentar hacerlo me dice que no puede insertar un
null en tal campo. Yo le tengo deshabilitado la opcion de nno aceptar
nulos pero si le coloco nulos dice que no es posiple por ser primary key.
Entonces no entiendo.
Que debo hacer?
Gracias de antemano.

Respuesta Responder a este mensaje
#2 Alejandro Mesa
31/07/2006 - 14:20 | Informe spam
Jose,

La clave primaria, por definicion, no acepta valores NULL, por lo que cada
columna que participa en la clave debe tener una restriccion de no aceptar
NULL. Si esta opcion (aceptar NULL) estava habilitada, no basta solo con
deshabilitarla sino chequear que estas columnas no tengan una fila donde el
valor de la columna sea NULL.

Chequea lo siguiente:

select *
from dbo.tu_tabla
where c1 is null or c2 is null or ... or c5 is null
go

Si existe alguna fila donde se cumpla esta condicion, entonces debes
actualizar la columna para quitar ese NULL.

Ahora, a pesar de que me gusta trabajar con claves naturales, una clave
primaria compuesta por cinco columnas suele ocupar muchos bytes y recuerda
que esta clave sera usada por todos los indices nonclustered como referencia.
Chequea el siguiente articulo, escrito por Carlos Sacristán (gran colaborador
de este grupo de noticias), sobre el uso de claves subrrogadas, las cuales
son utiles en estos casos.

¿ Claves naturales o artificiales ?
http://www.helpdna.net/colab01.htm


AMB


"Jose" wrote:

Esyimados(as). Quiero generar un indice de 5 campos de mi tabla como primary
key. Pero al intentar hacerlo me dice que no puede insertar un null en tal
campo. Yo le tengo deshabilitado la opcion de nno aceptar nulos pero si le
coloco nulos dice que no es posiple por ser primary key. Entonces no
entiendo.
Que debo hacer?
Gracias de antemano.



Respuesta Responder a este mensaje
#3 Jose
31/07/2006 - 14:42 | Informe spam
Gracias
"Gustavo Larriera (MVP)" escribió en el mensaje
news:eU%
Una llave primaria no admite valores nulos, ni desde el punto de vista
teórico ni tampoco en la implementación de SQL Server.

Lo que puedes hacer es implementar una restricción UNIQUE que sí admite
valores nulos (aunque solamente un valor nulo por columna).

Gustavo Larriera, MVP
Mentor, Solid Quality Learning
Blog: http://solidqualitylearning.com/blogs/glarriera/


"Jose" wrote in message
news:
Esyimados(as). Quiero generar un indice de 5 campos de mi tabla como
primary key. Pero al intentar hacerlo me dice que no puede insertar un
null en tal campo. Yo le tengo deshabilitado la opcion de nno aceptar
nulos pero si le coloco nulos dice que no es posiple por ser primary key.
Entonces no entiendo.
Que debo hacer?
Gracias de antemano.





Respuesta Responder a este mensaje
#4 Jose
31/07/2006 - 14:42 | Informe spam
Gracias muy interesante.
"Alejandro Mesa" escribió en el
mensaje news:
Jose,

La clave primaria, por definicion, no acepta valores NULL, por lo que cada
columna que participa en la clave debe tener una restriccion de no aceptar
NULL. Si esta opcion (aceptar NULL) estava habilitada, no basta solo con
deshabilitarla sino chequear que estas columnas no tengan una fila donde
el
valor de la columna sea NULL.

Chequea lo siguiente:

select *
from dbo.tu_tabla
where c1 is null or c2 is null or ... or c5 is null
go

Si existe alguna fila donde se cumpla esta condicion, entonces debes
actualizar la columna para quitar ese NULL.

Ahora, a pesar de que me gusta trabajar con claves naturales, una clave
primaria compuesta por cinco columnas suele ocupar muchos bytes y recuerda
que esta clave sera usada por todos los indices nonclustered como
referencia.
Chequea el siguiente articulo, escrito por Carlos Sacristán (gran
colaborador
de este grupo de noticias), sobre el uso de claves subrrogadas, las cuales
son utiles en estos casos.

¿ Claves naturales o artificiales ?
http://www.helpdna.net/colab01.htm


AMB


"Jose" wrote:

Esyimados(as). Quiero generar un indice de 5 campos de mi tabla como
primary
key. Pero al intentar hacerlo me dice que no puede insertar un null en
tal
campo. Yo le tengo deshabilitado la opcion de nno aceptar nulos pero si
le
coloco nulos dice que no es posiple por ser primary key. Entonces no
entiendo.
Que debo hacer?
Gracias de antemano.



email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida