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

Clave primaria acepta valores nulos

Estas en el tema de Clave primaria acepta valores nulos en el foro de SQL Server en Foros del Web. Hola soy un principiante que le gusta mucho la programación, he instalado Sql Server 2008 enterprise, para crear bases de datos y realizar consultas, encontrandome ...
  #1 (permalink)  
Antiguo 06/07/2011, 02:44
 
Fecha de Ingreso: julio-2011
Mensajes: 5
Antigüedad: 12 años, 9 meses
Puntos: 0
Clave primaria acepta valores nulos

Hola soy un principiante que le gusta mucho la programación, he instalado Sql Server 2008 enterprise, para crear bases de datos y realizar consultas, encontrandome con la sorpresa que la clave primaria sea del tipo de datos que sea y creada en modo grafico o modo comando acepta valor en blanco o nulo, resultando muy extraño por lo que me encomiendo a vosotros para buscar una explicacion, tambien he instaldo sql server 2005 y tambien pasa lo mismo al crear una base de datos la clave primaria acepta valor null y blanco solamente una vez por si intentas introducir valor null una segunda vez te dice que no puede tener valores duplicados, lo mismo pasa con los blancos.

Gracias
  #2 (permalink)  
Antiguo 06/07/2011, 07:58
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Clave primaria acepta valores nulos

Exacto si no le indicas a SQL que tu campo no debe de aceptar nulos entonces los aceptara para esto tienes que poner en tu creacion de tabla

create table tabla(
id int not null,
CONSTRAINT [PK_tabla] PRIMARY KEY CLUSTERED
(
[ID] ASC
)
)


y de los valores en blanco eso se debe de validar a menos que crees un autonumerico que siempre te incremente el valor del campo :)

Saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 06/07/2011, 10:51
 
Fecha de Ingreso: julio-2011
Mensajes: 5
Antigüedad: 12 años, 9 meses
Puntos: 0
Respuesta: Clave primaria acepta valores nulos

Hola de nuevo he probado la posible solución que me dais y no funciona sigue aceptando valores nulos, lo único que he cambiado de la solución que me has propuesto es el tipo de datos que utilizo char(10), de todas maneras si me dais un privado mando mi base de datos para que le hecheis un vistazo por que yo ya no puedo con ella ya que he probado casi todo.

Gracias
  #4 (permalink)  
Antiguo 06/07/2011, 11:50
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Clave primaria acepta valores nulos

Probe esto y si es asi como te digo:


create table #temp
(
id int not null
)

insert into #temp (id) values (null)

Msg 515, Level 16, State 2, Line 1
Cannot insert the value NULL into column 'id', table 'tempdb.dbo.#temp_________________________________ __________________________________________________ ____________________________000000005B01'; column does not allow nulls. INSERT fails.
The statement has been terminated.


A que te refieres con valores null?? valores sin nada o con blancos?? porque es diferente un NULL a un ''.

Saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #5 (permalink)  
Antiguo 07/07/2011, 01:26
 
Fecha de Ingreso: julio-2011
Mensajes: 5
Antigüedad: 12 años, 9 meses
Puntos: 0
Clave primaria acepta valores nulos

Hola la Base de datos se llama ESCUELA, la tabla ALUMNO y los campos de esta tabla son:
NOMBRE(PK, Char(10), NO NULL)
DNI(Char(10),NO NULL)
CP(Char(10), NO NULL)

Te lo describo tal cual me lo define Sql Server cuando despliegas COLUMNAS dentro del explorador de Objetos

Bueno pues si yo me voy a consultas y ejecuto:

INSERT INTO ALUMNO(NOMBRE,DNI,CP)
VALUES('NULL','','')

SELECT * FROM ALUMNO

Me añade una nueva linea, en la cual me aparece NOMBRE CON NULL.
Claro a mi me resulta rarisimo por que si es clave primaria por definicion no puede aceptar valores null, asi que por eso consulto a ver si esta mal instalado mi sql server o a ver que pasa por que tengo el programa hecho y estoy a la espera de solucionar el problema de la base de datos.

Gracias
  #6 (permalink)  
Antiguo 07/07/2011, 02:04
Avatar de Joch_pa  
Fecha de Ingreso: octubre-2009
Ubicación: Pachuca De Soto, Hidalgo, Mexico, Mexico
Mensajes: 122
Antigüedad: 14 años, 6 meses
Puntos: 7
Respuesta: Clave primaria acepta valores nulos

lo que haces aqui:


Código SQL:
Ver original
  1. INSERT INTO ALUMNO(NOMBRE,DNI,CP) VALUES('NULL','','')

es insertar un registro con una cadena en el campo nombre

para probarlo bien debería ser asi:

Código SQL:
Ver original
  1. INSERT INTO ALUMNO(NOMBRE,DNI,CP) VALUES( NULL ,'','')

NULL solamente sin apostrofes o comillas simples
  #7 (permalink)  
Antiguo 07/07/2011, 10:09
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Clave primaria acepta valores nulos

No es lo mismo NULL que 'NULL', el primero es nulo y el segundo es una cadena string que dice "NULL"
__________________
MCTS Isaias Islas
  #8 (permalink)  
Antiguo 07/07/2011, 15:54
Avatar de matanga  
Fecha de Ingreso: octubre-2007
Ubicación: España
Mensajes: 1.091
Antigüedad: 16 años, 5 meses
Puntos: 85
Respuesta: Clave primaria acepta valores nulos

Las propiedades fundamentales de una primary key son que el valor sea único y not null, en particular sobre los nulos, la norma ANSI SQL es clara: "..each column participating in the primary key is implicitly defined as NOT NULL..", por ejemplo:

Código:
1> create table t1 (id varchar(10), constraint pk1 primary key (id))
2> go
1> insert into t1 values (null)
2> go
Mensaje 515, Nivel 16, Estado 2, Servidor W-009, Línea 1
No se puede insertar el valor NULL en la columna 'id', tabla 'demo.dbo.t1'. La
columna no admite valores NULL. Error de INSERT.
Se terminó la instrucción.
1>
Saludos
  #9 (permalink)  
Antiguo 08/07/2011, 05:37
 
Fecha de Ingreso: julio-2011
Mensajes: 5
Antigüedad: 12 años, 9 meses
Puntos: 0
Respuesta: Clave primaria acepta valores nulos

Gracias amigo por vuestra ayuda os lo agradezco, sino fuera por la red de redes mi ignorancia estaría mas desarrollada todavía. gracias

Etiquetas: clave, nulos, primaria, server, sql
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 10:33.