Foro de elhacker.net

Programación => Bases de Datos => Mensaje iniciado por: SilverLycan68 en 22 Enero 2019, 21:46 pm



Título: Llave primaria compuesta
Publicado por: SilverLycan68 en 22 Enero 2019, 21:46 pm
Lo que necesito es que el ID=MarcaID+(ModeloID/1000) de que forma se podria hacer.
Código:
CREATE TABLE `autos` (
  `ID` double NOT NULL,
  `Marca` varchar(40) DEFAULT NULL,
  `MarcaID` int(10) NOT NULL,
  `Modelo` varchar(40) DEFAULT NULL,
  `ModeloID` int(10) NOT NULL,
    PRIMARY KEY (`ID`),
  UNIQUE KEY `ID_UNIQUE` (`ID`)
)
Si he visto que se puede hacer  Primary Key(MarcaID, ModeloID), pero no es lo que necesito.
Código:
CREATE TABLE `au1` (
  `MarcaId` int(5) NOT NULL,
  `Marca` varchar(20) DEFAULT NULL,
  `ModeloId` int(5) NOT NULL,
  `Modelo` varchar(20) DEFAULT NULL,
    PRIMARY KEY (`MarcaId`,`ModeloId`)
)
Les agradezco la ayuda.


Título: Re: Llave primaria compuesta
Publicado por: MCKSys Argentina en 23 Enero 2019, 11:39 am
Hola!

No soy experto en MySQL, pero lo siguiente parece funcionar:

Código
  1. CREATE TABLE `au1` (
  2.  `MarcaId` INT(5) NOT NULL,
  3.  `Marca` VARCHAR(20) DEFAULT NULL,
  4.  `ModeloId` INT(5) NOT NULL,
  5.  `Modelo` VARCHAR(20) DEFAULT NULL,
  6.  `Clave` INT(5) AS (`MarcaId` + `ModeloId` / 1000),
  7.  PRIMARY KEY (Clave)
  8. )
  9.  

Probado en: https://es.piliapp.com/mysql-syntax-check/ (https://es.piliapp.com/mysql-syntax-check/)

Saludos!