Question

Etant donné un schéma de la table Postgresql:

create table thing (
    id serial primary key,
    key text,
    type int references thing,   
    latest_revision int default 1,
    created timestamp default(current_timestamp at time zone 'utc'),
    last_modified timestamp default(current_timestamp at time zone 'utc')
);
$for name in ['key', 'type', 'latest_revision', 'last_modified', 'created']:
    create index thing_${name}_idx ON thing($name);

Il y a deux lignes je ne comprends pas et je me demande s'il est même possible de les convertir à un schéma de la table MySql? la ligne suivante peut être converti en quelque chose MySql comprendrait, comme il semble être lui-même référence:

type int references thing,

De plus, est-il un équivalent MySql pour la dernière ligne:

$for name in ['key', 'type', 'latest_revision', 'last_modified', 'created']:
    create index thing_${name}_idx ON thing($name);
Était-ce utile?

La solution

La ligne de references est une clé étrangère, vous pouvez utiliser quelque chose comme ça dans MySQL:

CREATE TABLE thing (
   ...
   type int,
   FOREIGN KEY (type) REFERENCES thing (id),
   ...
);

Les deux dernières lignes ne sont pas dans SQL, il est un langage de script. Il crée simplement des index sur les colonnes mentionnées:

CREATE INDEX thing_key_idx ON thing (key);
CREATE INDEX thing_type_idx ON thing (type);
...

Autres conseils

Cette dernière ligne ressemble à python, qui me conduirait à croire que cela venait de pgloader , un programme python couramment utilisé. Ou un programme de python-Adhoc. Ce n'est pas AFAIK de syntaxe valide pg ou psql.

Et le references foo, bit est une clé étrangère à la clé primaire de la table foo. Si aucune colonne est spécifiée par défaut, il la clé primaire.

Vérifiez la documentation sur créer la table pour plus d'informations .

Alors, de ce que vous tous me dites, ce serait un schéma de table équivalent MySql de la table Postgresql originale:

--
-- Table structure for table `thing`
--
CREATE TABLE IF NOT EXISTS `thing` (
  `id` int NOT NULL auto_increment,
  `key` text,
  `type` int,
  `latest_revision` tinyint NOT NULL default '1',
  `created` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  `last_modified` TIMESTAMP DEFAULT CURRENT_TIMESTAMP
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8;
-- 
-- Constraints for table `thing`
-- 
ALTER TABLE `thing`
  ADD CONSTRAINT `thing_ibfk_1` FOREIGN KEY (`type`) REFERENCES `thing` (`id`);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top