Valores en blanco admitidos en columna declaradas como NOTNULL

25/01/2007 - 16:29 por José Redondo | Informe spam
Estimados.

Por medio del presente le quiero plantear a ustedes el siguiente caso
incongruente que se me esta presentando.

Resulta que tengo una tabla "TABLA01" por asi llamarla, donde se encuentran
4 columnas que almacenan X datos. Resulta que haciendo pruebas de Inserción
desde el aplicativo (Aplicación cliente) para con esta tabla utilizando un
procedimiento almacenado INSERT INTO la ingresarles valores en blanco, osea,
sin contenido alguno, siendo establecida en dichas columnas la opción
NOTNULL, con el din de no permitirme valores NULL en ellas, me admite los
valores en blanco. Estoy claro que un valor en blanco es un valor asi no
tenga caracteres o digito alguno pero no logro comprender como puedo
restringir en no permitirme valores en blanco en las columnas de esta TABLA01
que expongo de ejemplo asi como con cualquier en la base de datos.

Alguién podria tener la gentileza de decirme como puedo establecer esa
restricción por asi decirlo.

Gracias por sus comentarios,

José Redondo

Preguntas similare

Leer las respuestas

#1 Javier Loria
25/01/2007 - 17:12 | Informe spam
Hola Jose:
Puedes usar una restriccion CHECK que seria algo como:
== , Columna VARCHAR(100) NOT NULL
CHECK (LEN(LTRIM(RTRIM(Columna)))>3)
== Este codigo limpia los espacios a la derecha (RTRIM) e izquierda (LTRIM)
y se asegura que tenga por lo menos 3 caracteres de largo.
Saludos,

Javier Loria
Costa Rica-MVP
Solid Quality Learning

"José Redondo" wrote in message
news:
Estimados.

Por medio del presente le quiero plantear a ustedes el siguiente caso
incongruente que se me esta presentando.

Resulta que tengo una tabla "TABLA01" por asi llamarla, donde se
encuentran
4 columnas que almacenan X datos. Resulta que haciendo pruebas de
Inserción
desde el aplicativo (Aplicación cliente) para con esta tabla utilizando un
procedimiento almacenado INSERT INTO la ingresarles valores en blanco,
osea,
sin contenido alguno, siendo establecida en dichas columnas la opción
NOTNULL, con el din de no permitirme valores NULL en ellas, me admite los
valores en blanco. Estoy claro que un valor en blanco es un valor asi no
tenga caracteres o digito alguno pero no logro comprender como puedo
restringir en no permitirme valores en blanco en las columnas de esta
TABLA01
que expongo de ejemplo asi como con cualquier en la base de datos.

Alguién podria tener la gentileza de decirme como puedo establecer esa
restricción por asi decirlo.

Gracias por sus comentarios,

José Redondo
Respuesta Responder a este mensaje
#2 Alejandro Mesa
25/01/2007 - 17:29 | Informe spam
José Redondo,

1 - Para no aceptar valores NULL, debes agregar "NOT NULL" como parte de la
definicion de la columna

create table dbo.t1 (c1 varchar(25) not null)

2 - Para evitar cadenas vacias oy quizas cadenas con solo espacios, debes
agregar una restriccion CHECK para evitar cadenas vacias o cadenas con solo
espacios.

Ejemplo:

create table dbo.t1 (
c1 char(5) not null check (c1 > cast('' as char(5))),
c2 nchar(5) not null check (c2 > cast('' as nchar(5))),
c3 varchar(25) not null check (c3 > cast('' as varchar(25))),
c4 nvarchar(25) not null check (c4 > cast('' as nvarchar(25)))
)
go

insert into dbo.t1(c1, c2, c3, c4) values(cast(' ' as char(5)), cast(' ' as
nchar(5)), cast(' ' as varchar(25)), cast(' ' as nvarchar(25)))
go

insert into dbo.t1(c1, c2, c3, c4) values(cast('z' as char(5)), cast('z' as
nchar(5)), cast('z' as varchar(25)), cast('z' as nvarchar(25)))
go

select * from dbo.t1
go

drop table dbo.t1
go


AMB

"José Redondo" wrote:

Estimados.

Por medio del presente le quiero plantear a ustedes el siguiente caso
incongruente que se me esta presentando.

Resulta que tengo una tabla "TABLA01" por asi llamarla, donde se encuentran
4 columnas que almacenan X datos. Resulta que haciendo pruebas de Inserción
desde el aplicativo (Aplicación cliente) para con esta tabla utilizando un
procedimiento almacenado INSERT INTO la ingresarles valores en blanco, osea,
sin contenido alguno, siendo establecida en dichas columnas la opción
NOTNULL, con el din de no permitirme valores NULL en ellas, me admite los
valores en blanco. Estoy claro que un valor en blanco es un valor asi no
tenga caracteres o digito alguno pero no logro comprender como puedo
restringir en no permitirme valores en blanco en las columnas de esta TABLA01
que expongo de ejemplo asi como con cualquier en la base de datos.

Alguién podria tener la gentileza de decirme como puedo establecer esa
restricción por asi decirlo.

Gracias por sus comentarios,

José Redondo
Respuesta Responder a este mensaje
#3 José Redondo
25/01/2007 - 19:31 | Informe spam
Excelente respuesta Alejandro. Muchas gracias por tu orientación al respecto
pero me queda una ultima inquietud, y es la siguiente:

Eso lo tengo que hacer en TODAS las columnas de TODAS las tablas de la base
de datos para evitar dicha situación?

Salu2 cordiales desde Venezuela,

JR

"Alejandro Mesa" wrote:

José Redondo,

1 - Para no aceptar valores NULL, debes agregar "NOT NULL" como parte de la
definicion de la columna

create table dbo.t1 (c1 varchar(25) not null)

2 - Para evitar cadenas vacias oy quizas cadenas con solo espacios, debes
agregar una restriccion CHECK para evitar cadenas vacias o cadenas con solo
espacios.

Ejemplo:

create table dbo.t1 (
c1 char(5) not null check (c1 > cast('' as char(5))),
c2 nchar(5) not null check (c2 > cast('' as nchar(5))),
c3 varchar(25) not null check (c3 > cast('' as varchar(25))),
c4 nvarchar(25) not null check (c4 > cast('' as nvarchar(25)))
)
go

insert into dbo.t1(c1, c2, c3, c4) values(cast(' ' as char(5)), cast(' ' as
nchar(5)), cast(' ' as varchar(25)), cast(' ' as nvarchar(25)))
go

insert into dbo.t1(c1, c2, c3, c4) values(cast('z' as char(5)), cast('z' as
nchar(5)), cast('z' as varchar(25)), cast('z' as nvarchar(25)))
go

select * from dbo.t1
go

drop table dbo.t1
go


AMB

"José Redondo" wrote:

> Estimados.
>
> Por medio del presente le quiero plantear a ustedes el siguiente caso
> incongruente que se me esta presentando.
>
> Resulta que tengo una tabla "TABLA01" por asi llamarla, donde se encuentran
> 4 columnas que almacenan X datos. Resulta que haciendo pruebas de Inserción
> desde el aplicativo (Aplicación cliente) para con esta tabla utilizando un
> procedimiento almacenado INSERT INTO la ingresarles valores en blanco, osea,
> sin contenido alguno, siendo establecida en dichas columnas la opción
> NOTNULL, con el din de no permitirme valores NULL en ellas, me admite los
> valores en blanco. Estoy claro que un valor en blanco es un valor asi no
> tenga caracteres o digito alguno pero no logro comprender como puedo
> restringir en no permitirme valores en blanco en las columnas de esta TABLA01
> que expongo de ejemplo asi como con cualquier en la base de datos.
>
> Alguién podria tener la gentileza de decirme como puedo establecer esa
> restricción por asi decirlo.
>
> Gracias por sus comentarios,
>
> José Redondo
Respuesta Responder a este mensaje
#4 Alejandro Mesa
25/01/2007 - 20:12 | Informe spam
José Redondo,

En todas las columnas tipo char / nchar / varchar / nvarchar donde quieras
restringir este tipo de entrada.


AMB


"José Redondo" wrote:

Excelente respuesta Alejandro. Muchas gracias por tu orientación al respecto
pero me queda una ultima inquietud, y es la siguiente:

Eso lo tengo que hacer en TODAS las columnas de TODAS las tablas de la base
de datos para evitar dicha situación?

Salu2 cordiales desde Venezuela,

JR

"Alejandro Mesa" wrote:

> José Redondo,
>
> 1 - Para no aceptar valores NULL, debes agregar "NOT NULL" como parte de la
> definicion de la columna
>
> create table dbo.t1 (c1 varchar(25) not null)
>
> 2 - Para evitar cadenas vacias oy quizas cadenas con solo espacios, debes
> agregar una restriccion CHECK para evitar cadenas vacias o cadenas con solo
> espacios.
>
> Ejemplo:
>
> create table dbo.t1 (
> c1 char(5) not null check (c1 > cast('' as char(5))),
> c2 nchar(5) not null check (c2 > cast('' as nchar(5))),
> c3 varchar(25) not null check (c3 > cast('' as varchar(25))),
> c4 nvarchar(25) not null check (c4 > cast('' as nvarchar(25)))
> )
> go
>
> insert into dbo.t1(c1, c2, c3, c4) values(cast(' ' as char(5)), cast(' ' as
> nchar(5)), cast(' ' as varchar(25)), cast(' ' as nvarchar(25)))
> go
>
> insert into dbo.t1(c1, c2, c3, c4) values(cast('z' as char(5)), cast('z' as
> nchar(5)), cast('z' as varchar(25)), cast('z' as nvarchar(25)))
> go
>
> select * from dbo.t1
> go
>
> drop table dbo.t1
> go
>
>
> AMB
>
> "José Redondo" wrote:
>
> > Estimados.
> >
> > Por medio del presente le quiero plantear a ustedes el siguiente caso
> > incongruente que se me esta presentando.
> >
> > Resulta que tengo una tabla "TABLA01" por asi llamarla, donde se encuentran
> > 4 columnas que almacenan X datos. Resulta que haciendo pruebas de Inserción
> > desde el aplicativo (Aplicación cliente) para con esta tabla utilizando un
> > procedimiento almacenado INSERT INTO la ingresarles valores en blanco, osea,
> > sin contenido alguno, siendo establecida en dichas columnas la opción
> > NOTNULL, con el din de no permitirme valores NULL en ellas, me admite los
> > valores en blanco. Estoy claro que un valor en blanco es un valor asi no
> > tenga caracteres o digito alguno pero no logro comprender como puedo
> > restringir en no permitirme valores en blanco en las columnas de esta TABLA01
> > que expongo de ejemplo asi como con cualquier en la base de datos.
> >
> > Alguién podria tener la gentileza de decirme como puedo establecer esa
> > restricción por asi decirlo.
> >
> > Gracias por sus comentarios,
> >
> > José Redondo
Respuesta Responder a este mensaje
#5 José Redondo
26/01/2007 - 16:40 | Informe spam
Gracias colegas por su colaboración. Me ayudaron enormemente.

Salu2 cordiales desde Venezuela,

José Redondo
E-mail:
MSN:
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida