Oracle y ojdbc java
Buenas, antes de nada felicitaros por la comunidad de oracle, me sorprendio ver una en español :), una vez dicho esto al grano …
tengo problemas con una foreign key que utiliza on delete set null. Me da el error [b]00902: tipo de dato no valido[/b]. En java si cierras con ; o / las sentencias dan problemas, con lo cual no lo pongo (hasta ahora me a ido bien), lo digo por si alguien piensa que podria ser eso.
Tengo las siguientes tablas JP_CATEGORIAS y JP_PRODUCTOS. Los create se encuentra en una variable string para lanzarla contra oracle. Prefiero ponelos las variables porque comprobando con sqldeveloper me funciona bien, los problemas viene con ojdbc y java , es un poco especial y me tiene de :silly:
[sql]
protected static String TABLE_CATEGORIAS = «CREATE TABLE JP_CATEGORIAS (» +
«COD_CATEGORIA INTEGER,» +
«COD_CAT_PADRE INTEGER,» +
«NOMBRE VARCHAR(40) CONSTRAINT NN_NOMBRE_CATEGORIA NOT NULL,» +
«ESTADO INTEGER CONSTRAINT NN_ESTADO_CATEGORIA NOT NULL,» +
«CONSTRAINT PK_CATEGORIAS PRIMARY KEY (COD_CATEGORIA),» +
«CONSTRAINT UQ_NOMBRE_CATEGORIA UNIQUE (NOMBRE))»;
protected static String CF_CATEGORIAS =
«ALTER TABLE JP_CATEGORIAS ADD CONSTRAINT CATEGORIAS_CATEGORIAS » +
«FOREIGN KEY (COD_CAT_PADRE) REFERENCES JP_CATEGORIAS (COD_CATEGORIA) ON DELETE SET NULL»;
[/sql]
Esta parte me funciona bien, si una categoria padre es eliminada las categorias hijas se convierten en padres, estableciendo el campo COD_CAT_PADRE a null. El problema viene con productos.
[sql]
protected static String TABLE_PRODUCTOS = «CREATE TABLE JP_PRODUCTOS (» +
«COD_PRODUCTO INTEGER,» +
«NOMBRE VARCHAR(40) CONSTRAINT NN_NOMBRE_PRODUCTO NOT NULL,» +
«DESCRIPCION VARCHAR(60),» +
«STOCK INTEGER CONSTRAINT NN_STOCK_PRODUCTO NOT NULL,» +
«MIN_STOCK INTEGER CONSTRAINT NN_MIN_STOCK_PRODUCTO NOT NULL,» +
«MAX_STOCK INTEGER CONSTRAINT NN_MAX_STOCK_PRODUCTO NOT NULL,» +
«PRECIO INTEGER CONSTRAINT NN_PRECIO_PRODUCTO NOT NULL,» +
«COD_CATEGORIA INTEGER,» +
«CONSTRAINT PK_PRODUCTOS PRIMARY KEY (COD_PRODUCTO),» +
«CONSTRAINT CK_STOCK CHECK (STOCK >= 0),» +
«CONSTRAINT CK_MINSTOCK CHECK (MIN_STOCK >= 0),» +
«CONSTRAINT CK_MAXSTOCK CHECK (MAX_STOCK >= 0),» +
«CONSTRAINT CK_PRECIO CHECK (PRECIO >= 0),» +
«CONSTRAINT UQ_NOMBRE_PRODUCTO UNIQUE (NOMBRE))»;
protected static String CF_PRODUCTOS =
«ALTER TABLE JP_PRODUCTOS ADD CONSTRAINT CATEGORIAS_PRODUCTOS» +
«FOREIGN KEY (COD_CATEGORIA) REFERENCES JP_CATEGORIAS (COD_CATEGORIA) ON DELETE SET NULL»;
[/sql]
Esta ultima parte me da el error. El campo COD_CATEGORIA de JP_PRODUCTOS la he dejado para que acepte valores NULL pero aun asi me sigue diciendo que el tipo de dato no es valido. y estoy un poco :angry: porque nose el error 🙂 . Lo raro es que con sqldeveloper me funciona a la perfeccion las dos y esto es lo que me tiene loco. Haber si me podeis hechar una mano porque no veo el error.
Saludos