Ver Mensaje Individual
  #1 (permalink)  
Antiguo 12/01/2015, 14:12
dark87_hp18
 
Fecha de Ingreso: diciembre-2013
Ubicación: Distrito Federal
Mensajes: 17
Antigüedad: 10 años, 4 meses
Puntos: 0
Exclamación Llave foranea

Tengo problemas para crear una llave foranea sobre una tabla ya existente.

Esta es la estructura de la tabla 'stockmaster' y el campo que quiero poner como llave foranea es 'categoria2'

Código MySQL:
Ver original
  1. +------------------+---------------+------+-----+------------+-------+
  2. | Field            | Type          | Null | Key | Default    | Extra |
  3. +------------------+---------------+------+-----+------------+-------+
  4. | stockid          | varchar(20)   | NO   | PRI |            |       |
  5. | categoryid       | varchar(6)    | NO   | MUL |            |       |
  6. | description      | varchar(50)   | NO   | MUL |            |       |
  7. | longdescription  | text          | NO   |     | NULL       |       |
  8. | units            | varchar(20)   | NO   |     | each       |       |
  9. | mbflag           | char(1)       | NO   | MUL | B          |       |
  10. | actualcost       | decimal(20,4) | NO   |     | 0.0000     |       |
  11. | lastcost         | decimal(20,4) | NO   |     | 0.0000     |       |
  12. | materialcost     | decimal(20,4) | NO   |     | 0.0000     |       |
  13. | labourcost       | decimal(20,4) | NO   |     | 0.0000     |       |
  14. | overheadcost     | decimal(20,4) | NO   |     | 0.0000     |       |
  15. | lowestlevel      | smallint(6)   | NO   |     | 0          |       |
  16. | discontinued     | tinyint(4)    | NO   |     | 0          |       |
  17. | controlled       | tinyint(4)    | NO   | MUL | 0          |       |
  18. | eoq              | double        | NO   |     | 0          |       |
  19. | volume           | decimal(20,4) | NO   |     | 0.0000     |       |
  20. | kgs              | decimal(20,4) | NO   |     | 0.0000     |       |
  21. | barcode          | varchar(50)   | NO   |     |            |       |
  22. | discountcategory | char(2)       | NO   | MUL |            |       |
  23. | taxcatid         | tinyint(4)    | NO   | MUL | 1          |       |
  24. | serialised       | tinyint(4)    | NO   |     | 0          |       |
  25. | appendfile       | varchar(40)   | NO   |     | none       |       |
  26. | perishable       | tinyint(1)    | NO   |     | 0          |       |
  27. | decimalplaces    | tinyint(4)    | NO   |     | 0          |       |
  28. | pansize          | double        | NO   |     | 0          |       |
  29. | shrinkfactor     | double        | NO   |     | 0          |       |
  30. | nextserialno     | bigint(20)    | NO   |     | 0          |       |
  31. | netweight        | decimal(20,4) | NO   |     | 0.0000     |       |
  32. | lastcostupdate   | date          | NO   |     | 0000-00-00 |       |
  33. | ieps             | double        | NO   |     | 0          |       |
  34. | iva              | double        | NO   |     | 0          |       |
  35. | pedimento        | varchar(70)   | NO   |     |            |       |
  36. | fecha            | varchar(70)   | NO   |     |            |       |
  37. | aduana           | varchar(70)   | NO   |     |            |       |
  38. | utilidadD        | double        | NO   |     | 0          |       |
  39. | actcode          | int(11)       | NO   |     | 0          |       |
  40. | categoria2       | varchar(6)    | NO   |     |            |       |
  41. +------------------+---------------+------+-----+------------+-------+

La tabla a la que debe hacer refencia esa llave foranea es 'stockcategory2' y el campo es 'categoryid':

Código MySQL:
Ver original
  1. +---------------------+----------+------+-----+---------+-------+
  2. | Field               | Type     | Null | Key | Default | Extra |
  3. +---------------------+----------+------+-----+---------+-------+
  4. | categoryid          | char(6)  | NO   | PRI |         |       |
  5. | categorydescription | char(20) | NO   | MUL |         |       |
  6. +---------------------+----------+------+-----+---------+-------+


La manera como estoy tratando de hacer mi llave foranea es:
Código MySQL:
Ver original
  1. ALTER TABLE stockmaster
  2. ADD CONSTRAINT categoria2
  3. FOREIGN KEY (categoria2)
  4. REFERENCES stockcategory2 (categoryid) ;

Agradecería mucho su ayuda.