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

unsigned ?

Estas en el tema de unsigned ? en el foro de Oracle en Foros del Web. Buenas, Seguramente sea una tontería, pero me salta siempre error al intentar declarar un campo como sin signo del siguiente modo "nombrecampo unsigned integer not ...
  #1 (permalink)  
Antiguo 14/11/2006, 03:36
 
Fecha de Ingreso: abril-2002
Mensajes: 1.014
Antigüedad: 22 años, 8 meses
Puntos: 8
unsigned ?

Buenas,

Seguramente sea una tontería, pero me salta siempre error al intentar declarar un campo como sin signo del siguiente modo "nombrecampo unsigned integer not null"

Gracias
  #2 (permalink)  
Antiguo 14/11/2006, 09:44
Avatar de kikolice  
Fecha de Ingreso: marzo-2004
Mensajes: 1.510
Antigüedad: 20 años, 9 meses
Puntos: 7
unsigned, nunca lo he visto en oracle, seguramente viene de otro motor y aca oracle no lo maneja, para que se usa el unsigned?
__________________
Blogzote.com :-) Mi blog
  #3 (permalink)  
Antiguo 14/11/2006, 10:00
 
Fecha de Ingreso: abril-2002
Mensajes: 1.014
Antigüedad: 22 años, 8 meses
Puntos: 8
Hola, es para impedir que se guarden números negativos. Gracias.
  #4 (permalink)  
Antiguo 14/11/2006, 10:21
Avatar de kikolice  
Fecha de Ingreso: marzo-2004
Mensajes: 1.510
Antigüedad: 20 años, 9 meses
Puntos: 7
mmmm a menos que se encuentre en las nuevas versiones o que de plano no sepa que exista, esto no existe en oracle, si quieres validar un dato antes de ser insertado o lo haces por tu programa o mas abajo a nivel trigger de tabla

ponerlo en un trigger before insert, update, que el numero se convierta a positivo

:new.nombrecampo := abs(:new.nombrecampo)
__________________
Blogzote.com :-) Mi blog
  #5 (permalink)  
Antiguo 14/11/2006, 10:24
Avatar de kikolice  
Fecha de Ingreso: marzo-2004
Mensajes: 1.510
Antigüedad: 20 años, 9 meses
Puntos: 7
mmmm a menos que se encuentre en las nuevas versiones o que de plano no sepa que exista, esto no existe en oracle, si quieres validar un dato antes de ser insertado o lo haces por tu programa o mas abajo a nivel trigger de tabla

ponerlo en un trigger before insert, update, que el numero se convierta a positivo

:new.nombrecampo := abs(:new.nombrecampo)
__________________
Blogzote.com :-) Mi blog
  #6 (permalink)  
Antiguo 15/11/2006, 02:58
 
Fecha de Ingreso: abril-2002
Mensajes: 1.014
Antigüedad: 22 años, 8 meses
Puntos: 8
Buenas, ya encontré la solución (para Oracle, no sé si funcionará en otros gestores de BBDD), aquí la dejo por si a alguien más le sirve:

Código:
CREATE table miTabla (
idtabla INTEGER NOT NULL CHECK (idtabla > 0),
PRIMARY KEY (idtabla)
);
También se puede hacer definiéndola como constraint:

Código:
CREATE table miTabla (
idtabla INTEGER NOT NULL,
CONSTRAINT pp CHECK (idtabla > 0),
PRIMARY KEY (idtabla)
);

También se pueden poner condiciones:

Código:
CREATE table miTabla (
idtabla INTEGER NOT NULL CHECK (idtabla > 0),
valor INTEGER NOT NULL CHECK (valor BETWEEN(1 AND 10) ),
PRIMARY KEY (idtabla)
);
Gracias y un saludo.

Última edición por MikiBroki; 15/11/2006 a las 03:18
  #7 (permalink)  
Antiguo 15/11/2006, 09:49
Avatar de kikolice  
Fecha de Ingreso: marzo-2004
Mensajes: 1.510
Antigüedad: 20 años, 9 meses
Puntos: 7
se me olvido el check debo poner mas atencion
__________________
Blogzote.com :-) Mi blog
  #8 (permalink)  
Antiguo 15/11/2006, 09:52
 
Fecha de Ingreso: abril-2002
Mensajes: 1.014
Antigüedad: 22 años, 8 meses
Puntos: 8
Nada nada, que a mi también se me había olvidado de clase
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 08:02.