سؤال

بالنظر إلى مخطط جدول ما بعد GRESQL:

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);

هناك سطران لا أفهمهما ولا أتساءل عما إذا كان من الممكن تحويلهما إلى مخطط جدول MySQL؟ هل يمكن تحويل السطر التالي إلى شيء سيفهمه MySQL ، حيث يبدو أنه يشير إلى نفسه:

type int references thing,

بالإضافة إلى ذلك ، هل هناك مكافئ MySQL للخط الأخير:

$for name in ['key', 'type', 'latest_revision', 'last_modified', 'created']:
    create index thing_${name}_idx ON thing($name);
هل كانت مفيدة؟

المحلول

ال references الخط هو مفتاح خارجي ، يمكنك استخدام شيء مثل هذا في MySQL:

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

الخطان الأخيران ليسا في SQL ، إنها لغة نصية. إنه ببساطة ينشئ فهارس على الأعمدة المذكورة:

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

نصائح أخرى

يبدو هذا السطر الأخير مثل بيثون ، مما سيؤديني إلى الاعتقاد بأن هذا جاء من ذلك pgloader, ، برنامج بيثون شائع الاستخدام. أو برنامج Python Adhoc. هذا غير صالح بناء الجملة AFAIK في PG ، أو PSQL.

و ال references foo, ، BIT هو مفتاح خارجي للمفتاح الأساسي للجدول FOO. إذا لم يتم تحديد أي عمود ، فهذا افتراضي للمفتاح الأساسي.

تحقق من المستندات اصنع جدول لمزيد من المعلومات.

لذا ، مما تخبرني جميعًا ، سيكون هذا مخططًا معادلاً لجدول MySQL لجدول PostgreSQL الأصلي:

--
-- 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`);
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top