create table check

22/08/2008 - 16:45 por daniel | Informe spam
Hola a todos

necesito cuando creo una tabla en el msde aplicar una restriccion check para
q el campo nombre este siempre en mayuscula.
por ej

create table aux (nombre varchar (10) not null check(upper(nombre)))

se puede, como seria? este ejemplo no funciona...

gracias

daniel

Preguntas similare

Leer las respuestas

#1 Gustavo Larriera (MVP)
22/08/2008 - 17:24 | Informe spam
ALTER TABLE dbo.aux
ADD CONSTRAINT CK_NombreMayusc
CHECK (upper(Nombre) = Nombre)

Gustavo Larriera, Microsoft MVP
http://www.linkedin.com/in/gustavolarriera
Este mensaje se proporciona tal como es, sin garantías de ninguna clase.



"daniel" wrote:

Hola a todos

necesito cuando creo una tabla en el msde aplicar una restriccion check para
q el campo nombre este siempre en mayuscula.
por ej

create table aux (nombre varchar (10) not null check(upper(nombre)))

se puede, como seria? este ejemplo no funciona...

gracias

daniel




Respuesta Responder a este mensaje
#2 Alejandro Mesa
22/08/2008 - 20:26 | Informe spam
Daniel,

Recuerda que esa expresion dependera de la collation que este usando esa
columna. Si la collation no es "CI - case sensitive", entonces tendras que
forzarla mediante el uso de COLLATE.

Ejemplo:

use tempdb
go

create table t (
c1 varchar(25) collate Modern_Spanish_CI_AS,
c2 varchar(25) collate Modern_Spanish_BIN2
)
go

insert into t(c1, c2) values('sql server 2005', 'sql server 2008')
insert into t(c1, c2) values('SQL SERVER 2011', 'SQL SERVER 2011')
go

select
c1
from
t
where
c1 = upper(c1)
go

select
c2
from
t
where
c2 = upper(c2)
go

select
c1, c2
from
t
where
c1 = upper(c1) collate Modern_Spanish_CS_AS
go

drop table t
go


AMB


"daniel" wrote:

Hola a todos

necesito cuando creo una tabla en el msde aplicar una restriccion check para
q el campo nombre este siempre en mayuscula.
por ej

create table aux (nombre varchar (10) not null check(upper(nombre)))

se puede, como seria? este ejemplo no funciona...

gracias

daniel




Respuesta Responder a este mensaje
#3 Alejandro Mesa
22/08/2008 - 20:30 | Informe spam
Correccion,

Si la collation no es "CI - case sensitive"



Si la collation no es "CS - case sensitive"...


AMB


"Alejandro Mesa" wrote:

Daniel,

Recuerda que esa expresion dependera de la collation que este usando esa
columna. Si la collation no es "CI - case sensitive", entonces tendras que
forzarla mediante el uso de COLLATE.

Ejemplo:

use tempdb
go

create table t (
c1 varchar(25) collate Modern_Spanish_CI_AS,
c2 varchar(25) collate Modern_Spanish_BIN2
)
go

insert into t(c1, c2) values('sql server 2005', 'sql server 2008')
insert into t(c1, c2) values('SQL SERVER 2011', 'SQL SERVER 2011')
go

select
c1
from
t
where
c1 = upper(c1)
go

select
c2
from
t
where
c2 = upper(c2)
go

select
c1, c2
from
t
where
c1 = upper(c1) collate Modern_Spanish_CS_AS
go

drop table t
go


AMB


"daniel" wrote:

> Hola a todos
>
> necesito cuando creo una tabla en el msde aplicar una restriccion check para
> q el campo nombre este siempre en mayuscula.
> por ej
>
> create table aux (nombre varchar (10) not null check(upper(nombre)))
>
> se puede, como seria? este ejemplo no funciona...
>
> gracias
>
> daniel
>
>
>
>
Respuesta Responder a este mensaje
#4 danielagui
24/08/2008 - 01:22 | Informe spam
no me funciona, no me da error cuando creo la restriccion, pero cuando
inserto el registro no lo convierte a mayuscula, estoy probando de
inserta nombre todos en minuscula... alguna otra sugerencia?


gracias

DAniel

On 22 ago, 12:24, Gustavo Larriera (MVP)
wrote:
ALTER TABLE dbo.aux
ADD CONSTRAINT CK_NombreMayusc
CHECK(upper(Nombre) = Nombre)

Gustavo Larriera, Microsoft MVPhttp://www.linkedin.com/in/gustavolarriera
Este mensaje se proporciona tal como es, sin garantías de ninguna clase.

"daniel" wrote:
> Hola a todos

> necesito cuando creo una tabla en el msde aplicar una restriccioncheckpara
> q el campo nombre este siempre en mayuscula.
> por ej

> create table aux (nombre varchar (10) not nullcheck(upper(nombre)))

> se puede, como seria? este ejemplo no funciona...

> gracias

> daniel
Respuesta Responder a este mensaje
#5 Juan Diego Bueno
24/08/2008 - 02:49 | Informe spam
Hola Daniel:

escribió en el mensaje de
noticias:
no me funciona, no me da error cuando creo la restriccion, pero cuando
inserto el registro no lo convierte a mayuscula, estoy probando de
inserta nombre todos en minuscula... alguna otra sugerencia?



Es que una cosa es que tu le digas que el valor del campo tenga que estar en
mayúsculas y otra muy diferente que cuando insertes un valor, te lo
convierta a mayúsculas.

Podrías hacer un trigger "on insert" de forma que al insertarlo, lo
cambiara automáticamente. Igual para las actualizaciones

Saludos
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida