Ver Mensaje Individual
  #3 (permalink)  
Antiguo 08/09/2006, 08:43
lenz
 
Fecha de Ingreso: agosto-2003
Mensajes: 203
Antigüedad: 21 años, 3 meses
Puntos: 0
Tablas

Gracias por contestar
Te paso los datos de la tabla, reducidos para que no ocupen tanto
La idea del left join es porder traer el orden, y la estructura del menu en items_front

Código:
CREATE TABLE SECCIONES
(
  ID_SECCION     INTEGER                        NOT NULL,
  FK_ID_MODULO   INTEGER,
  FK_ID_SECCION  INTEGER,
  NOMBRE         VARCHAR2(50 BYTE)              NOT NULL,
  BORRADO        CHAR(1 BYTE)                   DEFAULT 0                     NOT NULL,
  HABILITADO     CHAR(1 BYTE)                   DEFAULT 1                     NOT NULL
)

CREATE UNIQUE INDEX PK_SECCIONES_ECCIONES_PKEY ON SECCIONES (ID_SECCION)

CREATE OR REPLACE TRIGGER swt_secciones_id
  BEFORE INSERT ON secciones
  REFERENCING NEW AS NEW OLD AS OLD
  FOR EACH ROW
WHEN (
NEW.id_seccion is null
      )
BEGIN
  SELECT secciones_id_seccion_seq.NEXTVAL INTO :NEW.id_seccion FROM DUAL;
END;

ALTER TABLE SECCIONES ADD (
 CONSTRAINT PK_SECCIONES_ECCIONES_PKEY
 PRIMARY KEY (ID_SECCION)

ALTER TABLE SECCIONES ADD (
 CONSTRAINT FK_SECCIONES_K_ID_MODULO 
 FOREIGN KEY (FK_ID_MODULO) 
 REFERENCES MODULOS (ID_MODULO));

ALTER TABLE SECCIONES ADD (
 CONSTRAINT FK_SECCIONES_K_ID_SECCION 
 FOREIGN KEY (FK_ID_SECCION) 
 REFERENCES SECCIONES (ID_SECCION));
Código:
CREATE TABLE ITEMS_FRONT
(
  ID_ITEM_FRONT     INTEGER                     NOT NULL,
  FK_ID_ITEM_FRONT  INTEGER,
  NOMBRE            VARCHAR2(50 BYTE)           NOT NULL,
  HABILITADO        CHAR(1 BYTE)                DEFAULT 1                     NOT NULL,
  BORRADO           CHAR(1 BYTE)                DEFAULT 0                     NOT NULL,
  FK_ID_APLICACION  INTEGER,
  FK_ID_SECCION     INTEGER,
  ORDEN             INTEGER                     NOT NULL,
  MENU_FRONT        CHAR(1 BYTE)                DEFAULT 1                     NOT NULL
)


CREATE UNIQUE INDEX PKITEMSFRONTTEMSMENUFRONTPKEY ON ITEMS_FRONT (ID_ITEM_FRONT)


CREATE UNIQUE INDEX UNIQUEFKIDSECCIONFKIDAPLICACIO ON ITEMS_FRONT (FK_ID_APLICACION, FK_ID_SECCION)


CREATE OR REPLACE TRIGGER swt_items_front_id
  BEFORE INSERT ON items_front
  REFERENCING NEW AS NEW OLD AS OLD
  FOR EACH ROW
WHEN (
NEW.id_item_front is null
      )
BEGIN
  SELECT item_front_seq.NEXTVAL INTO :NEW.id_item_front FROM DUAL;
END;

ALTER TABLE ITEMS_FRONT ADD (
 CONSTRAINT PKITEMSFRONTTEMSMENUFRONTPKEY
 PRIMARY KEY
 (ID_ITEM_FRONT)


ALTER TABLE ITEMS_FRONT ADD (
 CONSTRAINT FK_ITEMS_FRONT_K_ID_APLICACION 
 FOREIGN KEY (FK_ID_APLICACION) 
 REFERENCES APLICACIONES (ID_APLICACION));

ALTER TABLE ITEMS_FRONT ADD (
 CONSTRAINT FK_ITEMS_FRONT_K_ID_ITEM_FRONT 
 FOREIGN KEY (FK_ID_ITEM_FRONT) 
 REFERENCES ITEMS_FRONT (ID_ITEM_FRONT));

ALTER TABLE ITEMS_FRONT ADD (
 CONSTRAINT FK_ITEMS_FRONT_K_ID_SECCION 
 FOREIGN KEY (FK_ID_SECCION) 
 REFERENCES SECCIONES (ID_SECCION));

Última edición por lenz; 08/09/2006 a las 08:44 Razón: me equivoque en un nombre de tabla