Crear tabla con condición

¿Sabéis alguna forma de crear una tabla en Oracle, con un campo DNI y una restricción que verifique que el DNI tiene lo 8 primeros caracteres que son números y el ultimo que sea una letra? . ¿Podría también hacer que si se introducen menos de 8 números, que se rellene con ceros por la izda?.
He intentado hacerlo con un check, pero no encuentro la forma.

1 respuesta

Respuesta
1
¿Cómo estas?
Mira, en estos momentos no tengo una 10g R2 para poder chequear este código pero la restricción que intentas agregar se puede hacer con expresiones regulares como la siguiente:
ALTER TABLE tabla
ADD CONSTRAINT nombre_constraint
CHECK (REGEXP_LIKE( columna, '^([:digit:]{1,8}[:alpha:]{1})$')
Ojo, que no la he podido testear, pero puedes probarla con algún select REGEXP_LIKE( '12345678A', '^([:digit:]{1,8}[:alpha:]{1})) from dual
Respecto a completar con 0, lo más simple es hacer lpad(columna, '0', 9), con lo cual completarás las posiciones, pero lo tienes que hacer en el código del insert y update, sino vas a tener que codificar un trigger que puede llegar a hacer todo (completar con '0' y además hacer el CHECK).

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas