Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   No puedo crear el CONTRAINT en SQL server 2005 (https://www.clubdelphi.com/foros/showthread.php?t=82102)

giantonti 25-01-2013 22:23:54

No puedo crear el CONTRAINT en SQL server 2005
 
hola foro tengo sql server 2005, importe la estructura de unas tablas desde mysql dandome asi una lineas de codigo que corriendola en SQL SERVER deberia crearme las TABLAS. sin embargo a correr el proceso me da una serie de errores que hacen referencia a los index y a los contraint, trato de investigar las causas y me doy cuenta que en la secuencia de la sentencia para crear las tabla hace referencia a una segunda tabla que por el orden que esta en la secuencia aun no se ha creado y por eso da el error. envio un pedacito de la sentencia

Código SQL [-]
CREATE TABLE dpalmacen (
  ALM_CODIGO char(3) default NULL,
  ALM_DESCRI char(40) default NULL,
  ALM_A_E char(4) default NULL,
  ALM_A_S char(4) default NULL,
  ALM_T_E char(4) default NULL,
  ALM_T_S char(4) default NULL,
  ALM_DIR1 char(40) default NULL,
  ALM_DIR2 char(40) default NULL,
  ALM_ENCARG char(40) default NULL,
  ALM_CODARE char(4) default NULL,
  ALM_TEL1 char(12) default NULL,
  ALM_TEL2 char(12) default NULL,
  ALM_TEL3 char(12) default NULL,
  ALM_CODSUC char(6) default NULL,
  ALM_ACTIVO tinyint(1) default NULL,
  ALM_P_E char(4) default NULL,
  ALM_P_S char(4) default NULL,
  ALM_CODTRA char(6) default NULL);
  CREATE INDEX  DPALMACEN1 ON dpalmacen (ALM_CODIGO,ALM_CODSUC);
  CREATE INDEX  DPALMACEN2 ON dpalmacen  (ALM_CODSUC);
  CREATE INDEX  DPALMACEN3 ON dpalmacen  (ALM_CODSUC,ALM_CODIGO);
  CONSTRAINT DPSUCURSAL_DPALMACEN FOREIGN CREATE INDEX  (ALM_CODSUC) REFERENCES   dpsucursal (SUC_CODIGO) ON UPDATE CASCADE
 ;

/*Table structure for table dpalumnos */

/*Table structure for table dpsucursal */


CREATE TABLE dpsucursal (
  SUC_CODIGO char(6) NOT NULL default '',
  SUC_DESCRI char(40) default NULL,
  SUC_DIR1 char(30) default NULL,
  SUC_DIR2 char(30) default NULL,
  SUC_DIR3 char(30) default NULL,
  SUC_TEL1 char(12) default NULL,
  SUC_TEL2 char(12) default NULL,
  SUC_TEL3 char(12) default NULL,
  SUC_ENCARG char(40) default NULL,
  SUC_CODARE char(4) default NULL,
  SUC_ESTADO char(20) default NULL,
  SUC_PAIS char(20) default NULL,
  SUC_MUNICI char(20) default NULL,
  SUC_PARROQ char(25) default NULL,
  SUC_RIF char(12) default NULL,
  SUC_NIT char(12) default NULL,
  SUC_MAIL char(40) default NULL,
  SUC_WEB char(40) default NULL,
  SUC_EMPRES tinyint(1) default NULL,
  SUC_FCHINI date default NULL,
  SUC_FCHFIN date default NULL,
  SUC_DIR4 char(40) default NULL,
  SUC_TEL4 char(12) default NULL,
  SUC_INVCSL tinyint(1) default NULL);
  CREATE UNIQUE INDEX DPSUCURSAL ON dpsucursal (SUC_CODIGO)
 ;

Eso es solo un ejemplo, pero sin embargo elimino los contraint de la sentencia y creo la tabla simple sin ningun problema pensando que una vez creadas ambas tablas podria solucionarlo aplicando un ALTER TABLE, pero no he tenido exito.

Código SQL [-]
 ALTER TABLE DPALMACEN 
      ADD CONSTRAINT DPSUCURSAL_DPALMACEN FOREIGN CREATE INDEX  (ALM_CODSUC) REFERENCES   dpsucursal (SUC_CODIGO) ON UPDATE CASCADE
Mucho sabria agradecer si pueden ayudarme con este problema que se esta presentando.

Casimiro Notevi 25-01-2013 22:28:50

Cita:

Empezado por giantonti (Mensaje 454061)
en la secuencia de la sentencia para crear las tabla hace referencia a una segunda tabla que por el orden que esta en la secuencia aun no se ha creado y por eso da el error.

Pues crea antes la otra.

giantonti 28-01-2013 14:07:42

Cita:

Empezado por Casimiro Notevi (Mensaje 454062)
Pues crea antes la otra.

lo estoy haciendo pero me da error

Msg 156, Level 15, State 1, Line 23
Incorrect syntax near the keyword 'CONSTRAINT'.

te envio la linea 23

Código SQL [-]
  CONSTRAINT DPSUCURSAL_DPALMACEN FOREIGN CREATE INDEX  (ALM_CODSUC) REFERENCES   dpsucursal (SUC_CODIGO) ON UPDATE CASCADE
 ;

Casimiro Notevi 30-01-2013 19:16:39

No conozco los scripts de MS Sql. Supongo que será algo así:

Código SQL [-]
...
...
alm_codtra char(6) default null,
foreign key (almc_codsuc) references dpsucursal (suc_codigo)  );
...
...

ecfisa 30-01-2013 20:11:19

Hola giantonti.

No uso MS SQL Server, pero aquí: Transact-SQL Reference: ALTER TABLE, está la sintáxis y buscando en la página por CONSTRAINT hay varios ejemplos.

También revisa estos enlaces: MS SQL Server 2005 CONSTRAINT.

Saludos.


La franja horaria es GMT +2. Ahora son las 22:17:24.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi