Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

[SOLUCIONADO] duda principiante

Estas en el tema de duda principiante en el foro de SQL Server en Foros del Web. Estoy teniendo problemas al intentar agragar un primary key a una columna con un nombre de columna compuesto. El código que estoy utilizando es: @import ...
  #1 (permalink)  
Antiguo 19/08/2015, 04:07
(Desactivado)
 
Fecha de Ingreso: marzo-2012
Mensajes: 366
Antigüedad: 12 años
Puntos: 31
duda principiante

Estoy teniendo problemas al intentar agragar un primary key a una columna con un nombre de columna compuesto.

El código que estoy utilizando es:

Código SQL:
Ver original
  1. USE MiBBDD
  2. ALTER TABLE MiTabla
  3. ADD CONSTRAINT PK_MiTabla ('Nombre Compuesto');

Info Extra:

- La columna Nombre Compuesto es una columna de tipo bit, ya contiene datos y contiene 3 registros. Un registro con 0, otro con 1 y otro con NULL.

- Las comillas que estoy utilizando son las que hay en la misma tecla que el cierre de interrogación (?).

- El error que me da es el siguiente:
Código:
Mens. 102, Nivel 15, Estado 1, Línea 3
Sintaxis incorrecta cerca de '('.

Última edición por gnzsoloyo; 19/08/2015 a las 06:09 Razón: Mal etiquetado. Usar Highlights, por favor.
  #2 (permalink)  
Antiguo 19/08/2015, 05:24
Avatar de Missi  
Fecha de Ingreso: agosto-2011
Mensajes: 391
Antigüedad: 12 años, 8 meses
Puntos: 43
Respuesta: duda principiante

([Nombre Compuesto])
  #3 (permalink)  
Antiguo 19/08/2015, 05:52
(Desactivado)
 
Fecha de Ingreso: marzo-2012
Mensajes: 366
Antigüedad: 12 años
Puntos: 31
Respuesta: duda principiante

Ahora me da el siguiente error:

Código:
Mens. 8111, Nivel 16, Estado 1, Línea 2
No se puede definir una restricción PRIMARY KEY en una columna que admite valores NULL de la tabla 'EsPalabraGenero'.
Mens. 1750, Nivel 16, Estado 0, Línea 2
No se pudo crear la restricción. Consulte los errores anteriores.

Última edición por Kritik; 19/08/2015 a las 05:59
  #4 (permalink)  
Antiguo 19/08/2015, 06:42
Avatar de Malenko
Moderador
 
Fecha de Ingreso: enero-2008
Mensajes: 5.323
Antigüedad: 16 años, 2 meses
Puntos: 606
Respuesta: duda principiante

Faltaría ver la definición de la tabla pero vamos que el error es muy descriptivo y por otra parte es una restricción para ser Primary Key: la columna no puede admitir valores null. Para ello has de agregar la restricción de NOT NULL a la columna y después ya te tendría que dejar hacerla Primary Key
__________________
Aviso: No se resuelven dudas por MP!
  #5 (permalink)  
Antiguo 19/08/2015, 07:33
(Desactivado)
 
Fecha de Ingreso: marzo-2012
Mensajes: 366
Antigüedad: 12 años
Puntos: 31
Respuesta: duda principiante

No puedo hacer la columna Primary Key porque necesito valores NULL en ella. Así que pues nada. Lo dejo en un campo Id que es como lo tengo ahora y listo.
  #6 (permalink)  
Antiguo 19/08/2015, 08:07
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: duda principiante

Partamos de una base, estimado: Una tabla forzosamente debe obligatoriamente tener una PK. Si una tabla no tiene PK, es una bolsa de basura (no es peyorativo, es una definición dada por un titular de la materia en la primera clase que tuve de BBDD).
Si estás creando una tabla sin PK, lo que tienes es un enorme error de diseño de datos, de los catastróficos.
Por favor, antes de seguir, debes volver a ver los principios del modelo relacional...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #7 (permalink)  
Antiguo 24/08/2015, 08:05
(Desactivado)
 
Fecha de Ingreso: marzo-2012
Mensajes: 366
Antigüedad: 12 años
Puntos: 31
Respuesta: duda principiante

Si tengo un PK, solo que es un campo Id al que de momento no llamo en forma de FK en ningún otro sitio.

De todas formas bien podrían permitir el valor NULL en una PK siempre y cuando única y exclusivamente hubiese 1 NULL... como es en mi caso. Y dado que son tablas estáticas que no van a cambiar su contenido, y que por lo tanto siempre única y exclusivamente va a contener un valor NULL... bien podría permitirse que dicha columna fuese PK.

¿Quizá en versiones posteriores a SQL Server 2008 R2 se permiten de esta manera? Si alguien lo sabe estaría muy bien que lo comentase.
  #8 (permalink)  
Antiguo 24/08/2015, 08:39
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: duda principiante

No. Un NULL no es un dato, sino un estado de indeterminación, por lo que no puede ser usado como PK. Si lo piensas lógicamente, una PK no puede ser indeterminada desde el momento que es una clave que identifica unívocamente un único registro en una tabla. En ese contexto no puede ser indeterminado.
Algunos DBMS lo que admiten es que un campo UNIQUE, que es una clave secundaria o alternativa, pueda usarse como FK, en tanto cumpla con la unicidad, y en ese caso puede ser nulable.
No estoy seguro en este momento si SQL Server lo admite.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: principiante
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:19.