Knex: рдПрдХрд╛рдзрд┐рдХ рдкреАрдХреЗ рдирд╣реАрдВ рдмрдирд╛ рд╕рдХрддреЗ (.primary рдХреЗ рд╕рд╛рде .increments)

рдХреЛ рдирд┐рд░реНрдорд┐рдд 18 рдЬреБрд▓ре░ 2014  ┬╖  31рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: knex/knex

рдореИрдВ MySQL рдбрдВрдк рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░рддреЗ рд╣реБрдП рдПрдХ рдЯреЗрдмрд▓ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ:

CREATE TABLE `my_table` (
  `cmdId` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `deviceId` char(16) NOT NULL,
  `fnNumber` int(10) unsigned DEFAULT NULL,
  `chNumber` int(10) unsigned DEFAULT NULL,
  `cmd` varchar(50) DEFAULT NULL,
  `cmdDate` datetime DEFAULT NULL,
  `delivered` tinyint(1) DEFAULT NULL,
  PRIMARY KEY (`cmdId`,`deviceId`),
  KEY `deviceId` (`deviceId`),
  CONSTRAINT `tblcommands_ibfk_1` FOREIGN KEY (`deviceId`) REFERENCES `second_table` (`deviceId`) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

рдореЗрд░реА рдШреБрдВрдбреА рдРрд╕реА рджрд┐рдЦрддреА рд╣реИ:

knex.schema.createTable('my_table', function(t) {
    t.primary(['cmdId', 'deviceId']);
    t.increments('cmdId');
    t.string('deviceId', 16).notNullable().references('second_table.deviceId');
    t.integer('fnNumber').unsigned();
    t.integer('chNumber').unsigned();
    t.string('cmd96', 50);
    t.dateTime('cmdDate');
    t.boolean('delivered');
});

рд╣рд╛рд▓рд╛рдВрдХрд┐ рдкреНрд░рд╛рдердорд┐рдХ рдХреБрдВрдЬреА рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИред рдореБрдЭреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рддреНрд░реБрдЯрд┐ рдорд┐рд▓реА:

Error: Multiple primary key defined

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ increments рд╡рд┐рдзрд┐ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА PK рдмрдирд╛рддрд╛ рд╣реИ рдФрд░ primary рд╡рд┐рдзрд┐ рдПрдХ рдФрд░ рдПрдХ рдмрдирд╛рддрд╛ рд╣реИ рдЬреЛ рдПрдХ рддреНрд░реБрдЯрд┐ рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИред

рдХреНрдпрд╛ рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рдЗрд╕ рдкреНрд░рд╛рд░реВрдк рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ?

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдпрд╛ рдЖрдк рдХреЗ рд╕рд╛рде de autoincrement рдХреЙрд▓рдо рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ

table.specificType('myid','serial');

(рдХреЗрд╡рд▓ Postgresql рдХреЗ рд▓рд┐рдП)

рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдмрд╣реБрдд рдмреЗрд╣рддрд░ рд╣реИ table.increments() рдХреЗрд╡рд▓ рдкреАрдХреЗ рдмрдирд╛рдПрдВрдЧреЗ рдпрджрд┐ рдореИрдВ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ table.increments().primary()

рд╕рднреА 31 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдирд╣реАрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рд╢рд╛рдпрдж рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдореИрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреБрдЫ рджреЗрдЦреВрдВрдЧрд╛ред

Https://github.com/tgriesser/knex/blob/master/lib/dialects/mysql/schema/column.js#L30 рдХреЗ рдЕрдиреБрд╕рд╛рд░

ColumnCompiler_MySQL.prototype.increments = 'int unsigned not null auto_increment primary key';

рддреЛ, .increments() PK рдмрдирд╛рддрд╛ рд╣реИред рдХреНрдпрд╛ рдпрд╣ рдмрд╣реБрдд рдордЬрдмреВрдд рд╡реНрдпрд╡рд╣рд╛рд░ рдирд╣реАрдВ рд╣реИ? рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ, рдпрд╣ рдмреЗрд╣рддрд░ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рдпрд╣ рдкреАрдХреЗ рдХреЗ рдмрд┐рдирд╛ AUTO_INCREMENT рдХреЙрд▓рдо рдмрдирд╛рдПрдЧрд╛, рдЗрд╕рд▓рд┐рдП:

int unsigned not null auto_increment

рдФрд░ PK рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ .primary() рдХреЙрд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛:

table.increments('id').primary();

рдпрд╣ AUTO_INCREMENT рдХреЙрд▓рдо рдХреЗ рд╕рд╛рде рдХрдИ PK рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред

рдПрдХ рдХрд╛рдордЪреЛрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдореИрдВ рдЕрднреА рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ:

table.primary(['cmdId', 'deviceId']);
table.integer('cmdId').notNullable();
table.string('deviceId', 16).notNullable().references('second_table.deviceId');

рдФрд░ then рдХреЙрд▓рдмреИрдХ рдореЗрдВ:

knex.schema.raw('ALTER TABLE my_table MODIFY cmdId INT UNSIGNED AUTO_INCREMENT');

рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд╕рдорд╛рди рдореБрджреНрджрд╛ рд╣реИ - рдореИрдВ рдкреНрд░рд╛рдердорд┐рдХ рдХреБрдВрдЬреА рд╣реЛрдиреЗ рдХреЗ рдмрд┐рдирд╛ .increments() рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣ рдкреНрд░рджрд░реНрд╢рди рдХрд╛рд░рдгреЛрдВ рд╕реЗ рд╣реИред рдореИрдВ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдЗрдВрдбреЗрдХреНрд╕ (рдЬрд┐рд╕рдХрд╛ рдХреЛрдИ рдкреНрд░рд╛рдердорд┐рдХ рдХреБрдВрдЬреА рдирд╣реАрдВ рд╣реИ) рдХреЗ рд╕рд╛рде рддрд╛рд▓рд┐рдХрд╛ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдЗрд╕рдореЗрдВ рдХрдИ рдкрдВрдХреНрддрд┐рдпрд╛рдБ рдбрд╛рд▓реЗрдВ рдФрд░ рдлрд┐рд░ рдСрдЯреЛрдЗрдиреНрдХреНрд░рд┐рдореЗрдВрдЯ рдХреЙрд▓рдо рдкрд░ рдПрдХ рдЗрдВрдбреЗрдХреНрд╕ рдЬреЛрдбрд╝реЗрдВред рдпрд╣ рдЕрдзрд┐рдХ рдкреНрд░рджрд░реНрд╢рди рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд╣реИ, рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдЬреЗрд╕ рдкреНрд░рд▓реЗрдЦрди рджреНрд╡рд╛рд░рд╛ рдЕрдиреБрд╢рдВрд╕рд┐рдд рд╣реИ (рджреЗрдЦреЗрдВ http://www.postgresql.org/docs/9.4/static/populate.html#POPULATE-RM-INDEXES), рд▓реЗрдХрд┐рди рдРрд╕рд╛ рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рд▓рдЧрддрд╛ рд╣реИ рдирдХреНрд╕ред

рдореИрдВ рднреА рдЗрд╕реА рддрд░рд╣ рдХреЗ рдореБрджреНрджреЗ рдореЗрдВ рднрд╛рдЧ рд░рд╣рд╛ рд╣реВрдВред рдореИрдВ рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рдирд╣реАрдВ рдмрдирд╛ рдкрд╛ рд░рд╣рд╛ рд╣реВрдБ рдЬрд┐рд╕рдореЗрдВ:

knex.schema.createTable("numeric_table", function (table) {
    table.integer("integer_key").primary;

   // Both increments & bigIncrements tries to create primary key.
    table.increments("increment_key");
    table.bigIncrements("big_increment_key");
});

рдпрд╣рд╛рдБ рдПрдХ рд╣реА рдореБрджреНрджрд╛ .increments () рдПрдХ рдкреНрд░рд╛рдердорд┐рдХ рдХреБрдВрдЬреА рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реИ, рднрд▓реЗ рд╣реА рдореИрдВ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдПрдХ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддрд╛ рд╣реВрдВ

рдЖрдк рдЕрдкрдиреА рдкреНрд░рд╛рдердорд┐рдХ рдХреБрдВрдЬреА рдХреЗ рдмрд┐рдирд╛ рд╡реЗрддрди рд╡реГрджреНрдзрд┐ рдХреЙрд▓рдо рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрдЪреНрдЪреА рдХреНрд╡реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

exports.up = function (knex) {
  return Promise.all([
    knex.raw('alter table "my_table" add column "my_seq" bigserial'),
  ]);
};

exports.down = (knex) => {
  return Promise.all([
    knex.schema.table('my_table', (t) => {
      t.dropColumn('my_seq');
    }),
  ]);
};

рдпрд╛ рдЖрдк рдХреЗ рд╕рд╛рде de autoincrement рдХреЙрд▓рдо рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ

table.specificType('myid','serial');

(рдХреЗрд╡рд▓ Postgresql рдХреЗ рд▓рд┐рдП)

рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдмрд╣реБрдд рдмреЗрд╣рддрд░ рд╣реИ table.increments() рдХреЗрд╡рд▓ рдкреАрдХреЗ рдмрдирд╛рдПрдВрдЧреЗ рдпрджрд┐ рдореИрдВ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ table.increments().primary()

рдХреНрдпреЛрдВ рдирд╣реАрдВ рдЫреЛрдбрд╝рддреЗ?
increments: 'serial'
рдХреА рдмрдЬрд╛рдп
increments: 'serial primary key'

рдЙрд╕ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рдХреНрдпрд╛ рд╣реИ?

рдореБрдЭреЗ рдЕрдм рднреА рд╡рд╣реА рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИред
IMHO .increments рдХреЛ рдкреАрдХреЗ рдирд╣реАрдВ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдХреЛрдИ рдЦрдмрд░?

рд╕рд╣рдордд - рдЬрдмрдХрд┐ рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рдЖрд╕рдкрд╛рд╕ рд╡рд┐рднрд┐рдиреНрди рддрд░реАрдХреЛрдВ рд╕реЗ рдХрд╛рдо рдХрд░рдирд╛ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╕рдВрднрд╡ рд╣реИ, рдмрд▓реНрдХрд┐ рдпрд╣ рд╡рд┐рдЪрд┐рддреНрд░ рд╣реИ рдХрд┐ рдПрдкреАрдЖрдИ рдореЗрдВ рдПрдХ рдкреНрд░рд╛рдердорд┐рдХ рдХреБрдВрдЬреА рдмрдирд╛рдиреЗ рдХреЗ рдмрд┐рдирд╛ рдСрдЯреЛ-рдЗрдВрдХреНрд░реАрдореЗрдВрдЯ рдХреЙрд▓рдо рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рдердо рд╢реНрд░реЗрдгреА рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рд╣реИред

рдЗрд╕рдХреЗ рд╕рд╛рде рд╣реА, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЕрднреА рддрдХ рддрдп рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдХрд╛рдореБрдХ рддрд░реАрдХреЗ рд╕реЗ рдПрдХ рдмреНрд░реЗрдХрд┐рдВрдЧ рдкрд░рд┐рд╡рд░реНрддрди рд╣реЛрдЧрд╛, рдФрд░ рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рдПрдХ рдкреНрд░рдореБрдЦ рд╕рдВрд╕реНрдХрд░рдг рдЯрдХреНрдХрд░ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдмрдирдирд╛ рд╣реЛрдЧрд╛ред

@ рдЬрд╝реИрдХреНрд░реЛрдиреЛрд╕
рдЕрдЧрд░ рд╣рдо рдЯреЗрдмрд▓ рдмрдирд╛рддреЗ рд╕рдордп рдХрд┐рд╕реА рдХреЙрд▓рдо рдкрд░ .primary() рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдкрд░рд┐рдгрд╛рдо рддрд╛рд▓рд┐рдХрд╛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рдХреНрд╡реЗрд░реА рд╣реЛрдЧрд╛, рдФрд░ рдкреНрд░рд╛рдердорд┐рдХ рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ alter table рдХреНрд╡реЗрд░реА рд╣реЛрдЧреАред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ MySQL (рдпрд╛ рд╢рд╛рдпрдж рдЕрдиреНрдп DBMS рднреА) рдореЗрдВ, рдЖрдкрдХреЗ рдкрд╛рд╕ PK рд╣реЛрдиреЗ рдХреЗ рдмрд┐рдирд╛ auto_incremement рдлрд╝реАрд▓реНрдб рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рдЗрд╕рд▓рд┐рдП, knex рдкреНрд░рд╛рдердорд┐рдХ рдХреБрдВрдЬреА рдХреЗ рд╕рд╛рде рддрд╛рд▓рд┐рдХрд╛ рдмрдирд╛рддрд╛ рд╣реИ, рдФрд░ рддрдм рдпрд╣ рдХреЗрд╡рд▓ alter рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рджреЛ рдкреНрд░рд╛рдердорд┐рдХ рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рд╣реИред
рдпрджрд┐ рд╣рдо рдЗрд╕реЗ рдареАрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рддреЛ рд╢рд╛рдпрдж .increments рдЕрднреА рднреА PK рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЕрдиреНрдп рд╕реНрддрдВрднреЛрдВ рдХреЛ PK рдХреЗ рд╕рд╛рде-рд╕рд╛рде рд╕рднреА рдХреЛ рдПрдХ create table рдХреНрд╡реЗрд░реА рдореЗрдВ рд░рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рд╢рд╛рдпрдж рдПрдХ рдкреНрд░рдореБрдЦ рд╕рдВрд╕реНрдХрд░рдг рдЯрдХреНрдХрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдЧреАред

рдпрд╛ рд╣рдо рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рд╕реНрддрдВрдн рдкреНрд░рдХрд╛рд░ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ .increments рдХреЛ рдЫреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ рдЬреИрд╕рд╛ рдХрд┐ рдкрд┐рдЫрдбрд╝реЗ рд╕рдВрдЧрддрддрд╛ рдХреЛ рддреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рд╣реИред

@ рдЖрдорд┐рд░-рдПрд╕: рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдХреНрдпреЛрдВ рдиреЗрдХреНрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддрд╛ рд╣реИ рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рдХрд░рддрд╛ рд╣реИ - рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рд╣реИ рдЬреЛ рд╡рд┐рднрд┐рдиреНрди рд╕рдорд░реНрдерд┐рдд рдбреАрдмреАрдПрдордПрд╕ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИред рдореИрдВ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдкрд╕рдВрдж рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдХрдо рд╕реЗ рдХрдо рдпрд╣ рдЕрдм рд╡рд┐рдЪрд┐рддреНрд░ рдирд╣реАрдВ рд▓рдЧрддрд╛ рд╣реИред

рдЖрдкрдХреЗ рд╕реБрдЭрд╛рд╡ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рдореЗрдЬ рдкрд░ рдХрдИ рдкреНрд░рд╛рдердорд┐рдХ рдХреБрдВрдЬреА рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВред (рдЖрдкрдХреЗ рдкрд╛рд╕ рдХрдИ рд╕реНрддрдВрднреЛрдВ рдкрд░ 1 рд╕рдордЧреНрд░ PK рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ 2 рдПрдХрд▓-рд╕реНрддрдВрдн PKs рд╣реЛрдиреЗ рд╕реЗ рдмрд╣реБрдд рдЕрд▓рдЧ рд╣реИред)

рдЗрд╕рд▓рд┐рдП рдпрджрд┐ .increments рдПрдХ PK рдмрдирд╛рддрд╛ рд╣реИ, рддреЛ рдЕрдиреНрдп рд╕реНрддрдВрднреЛрдВ рдХреЛ рднреА PK рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИред рдРрд╕рд╛ рд╡рд┐рдХрд▓реНрдк рдмрдирд╛рдирд╛ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛ рдЬреЛ рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдЬ рдФрд░ рдРрд╕реЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХрд┐рд╕реА рднреА рдЕрдиреНрдп рдбреАрдмреАрдПрдордПрд╕ рдкрд░ рдкреНрд░рд╛рдердорд┐рдХ рдХреБрдВрдЬреА рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП .increments рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред рд╢рд╛рдпрдж рдпрд╣ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдкрд┐рдЫрдбрд╝реЗ рд╕рдВрдЧрддрддрд╛ рдХреЛ рдирд╣реАрдВ рддреЛрдбрд╝рддрд╛ рд╣реИ рдФрд░ рдпрд╣ рдХреНрд░реЙрд╕-рдбреАрдмреАрдПрдордПрд╕ рд╕рдВрдЧрддрддрд╛ рдХреЛ рднреА рдирд╣реАрдВ рддреЛрдбрд╝рддрд╛ рд╣реИред рдореБрдЭреЗ рдЕрднреА рднреА рдпрд╣ рдкрд╕рдВрдж рдирд╣реАрдВ рд╣реИ рдХрд┐ рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдЬ рдкрд░ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рдП рддрд╛рдХрд┐ .increments рднреА рдЗрд╕реЗ PK рди рдмрдирд╛ рд╕рдХреЗ, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрдзрд┐рдХ рдЖрд╕рд╛рдиреА рд╕реЗ рд╕реНрд╡реАрдХреГрдд PR рд╣реЛрдЧрд╛ред

рдЕрдЧрд░ рдХреЛрдИ рднреА рдЙрди рд▓рд╛рдЗрдиреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдкреАрдЖрд░ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ, рддреЛ рдореИрдВ рдЗрд╕рдХреЗ рдкрдХреНрд╖ рдореЗрдВ рддрд░реНрдХ рджреВрдВрдЧрд╛ред :-)

@zacronos рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, "рдХрдИ рдкреАрдХреЗ" рд╕реЗ рдореЗрд░рд╛ рдорддрд▓рдм рд╣реИ "рдХрдИ рдХреЙрд▓рдо рдкрд░ рдПрдХ рдкреАрдХреЗ"ред

рдЙрдкрд░реЛрдХреНрдд рд╕рднреА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдордЭреМрддреЗ рдореЗрдВред рд╕рдордЧреНрд░ рдкреНрд░рд╛рдердорд┐рдХ рдХреБрдВрдЬреА рдФрд░ рд╕рд╛рде рд╣реА рдПрдХ рдЧреИрд░-рдХреБрдВрдЬреА рдСрдЯреЛ-рд╡реГрджреНрдзрд┐ рдХреЙрд▓рдо рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╕рдордп рдпрд╣ рд╡реНрдпрд╡рд╣рд╛рд░ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рдерд╛ред рдЗрд╕реЗ рд▓рд╛рдЧреВ рд╣реЛрддреЗ рд╣реБрдП рджреЗрдЦрдирд╛ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред

рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдореЗрдВ рднреА рднрд╛рдЧ рд░рд╣рд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди Postgres рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдФрд░ рд╡рд┐рджреЗрд╢реА рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реАрд░рд┐рдпрд▓ рдлрд╝реАрд▓реНрдбреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ - Postgres рд╕реАрд░рд┐рдпрд▓ рдХреНрд╖реЗрддреНрд░ рдХрд╛ knex рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди increments() рдФрд░ рдпрд╣ рдЙрдиреНрд╣реЗрдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдкреНрд░рд╛рдердорд┐рдХ рдХреБрдВрдЬреА рдмрдирд╛рддрд╛ рд╣реИред рдореИрдВ sqlite3 рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдЬ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдПрдХ рдХрдЪреНрдЪреЗ knex рдХреНрд╡реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдореБрдЭреЗ рдпрд╛ рддреЛ рд╕реАрдорд┐рдд рдХрд░ рджреЗрдЧрд╛ред рдХреЛрдИ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рд╕реБрдЭрд╛рд╡?

рдЗрд╕ рдзрд╛рдЧреЗ рдиреЗ рдХреБрдЫ рд╣реА рд╕рдордп рдореЗрдВ рдЬреНрдпрд╛рджрд╛ рдзреНрдпрд╛рди рдирд╣реАрдВ рджрд┐рдпрд╛ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЬреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдЖрджрд░реНрд╢, рдкрд┐рдЫрдбрд╝рд╛-рд╕рдВрдЧрдд рд╕рдорд╛рдзрд╛рди рд╣реИ (рдЬреЛ рдХрд┐рд╕реА рднреА рдЫреЛрдЯреА рд░рд┐рд▓реАрдЬ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ) рдХреЛ рджреЛрд╣рд░рд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ: .increments() , рд╢рд╛рдпрдж primaryKey: false , рдЬреЛ рдореЗрдВ рдПрдХ рдирдпрд╛ рд╡рд┐рдХрд▓реНрдк рдЬреЛрдбрд╝реЗрдВ (DBMS рдХреЗ рд▓рд┐рдП рдЬрд╣рд╛рдВ рдпрд╣ рд╕рдВрднрд╡ рд╣реИ) рдЕрдкрдиреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рдкреНрд░рд╛рдердорд┐рдХ рдкреНрд░рдореБрдЦ рднрд╛рдЧ рдХреЛ рдирд┐рд╖реНрдХреНрд░рд┐рдп рдХрд░ рджреЗрддрд╛ рд╣реИред

рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкрд┐рдЫрдбрд╝рд╛ рд╕рдВрдЧрдд рд╣реИ рдХреНрдпреЛрдВрдХрд┐ .increments() рдЕрдкрдиреЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдмрд░рдХрд░рд╛рд░ рд░рдЦрддрд╛ рд╣реИред

@zacronos рдиреЗ рдХреЛрдб рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рддреНрд╡рд░рд┐рдд рд░реВрдк рд╕реЗ рджреЗрдЦрд╛ред рддреБрдЪреНрдЫ рджрд┐рдЦрддрд╛ рд╣реИред рдПрдХ рд╕рд╛рде рдПрдХ рдкреАрдЖрд░ рдлреЗрдВрдХ рджрд┐рдпрд╛
https://github.com/DeedMob/knex/tree/master/src

рдПрдХ рд╣реА рдореБрджреНрджрд╛ рдпрд╣рд╛рдБред рдПрдХ рдФрд░ рдкреНрд░рд╛рдердорд┐рдХ рдХреБрдВрдЬреА рдмрдирд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП bigIncrements() рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдХрдЪреНрдЪреА рдХреНрд╡реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб:

table.bigincrements();
table.biginteger('other').notNullable();
table.dropPrimary();
table.primary(['id', 'other']);

рдЕрдЧрд░ рдореИрдВ рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рдкрд┐рдЫрд▓реА рдЬрд╛рдВрдЪ рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕рдордЭрддрд╛ рд╣реВрдВ рддреЛ рджрдмрд╛рд╡ рдбрд╛рд▓рдиреЗ рд╡рд╛рд▓реЗ рдиреЗ рдПрдХ рдкреНрд░рд╛рдердорд┐рдХ рдХреБрдВрдЬреА рдХреЛ рд╕рдЦреНрддреА рд╕реЗ рджрдмрд╛рдпрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдХреБрдЫ DBs (рдпрд╛рдиреА MySQL) рдкреНрд░рд╛рдердорд┐рдХ рдХреБрдВрдЬреА рд╣реЛрдиреЗ рдХреЗ рдмрд┐рдирд╛ рдзрд╛рд░рд╛рд╡рд╛рд╣рд┐рдХ рдирд╣реАрдВ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ? рдЕрдЧрд░ рдРрд╕рд╛ рд╣реИ, рддреЛ рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдЬ рдХреА рдмрд╛рдд рд╣реЛрдиреЗ рдкрд░ рдореИрдВ рдкреАрдЫреЗ рдХреА рд╕рдВрдЧрддрддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЪрд┐рдВрддрд╛ рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛ред

рдПрдХ MySQL рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рддрдм рдпрд╣ рдПрдХ рдкреНрд░рд╛рдердорд┐рдХ рд╣реЛрдиреЗ рдХреА рдЙрдореНрдореАрдж рдХрд░реЗрдЧрд╛ред
рдПрдХ Postgres рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред _ (рдЬреЛ рдКрдкрд░ рд╕реНрдкрд╖реНрдЯ рд╣реИ) _

рдЗрд╕ рдХрд╛рд░рдг рд╕реЗ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдЬ рдореЗрдВ _not_ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рдердорд┐рдХ рдХреБрдВрдЬреА рдореЗрдВ рд╕рдорд╛рдпреЛрдЬрди рдХрд░рдирд╛ рдХрд╛рдлреА рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИ, рдФрд░ рдЗрд╕реЗ рдЪреИрдВрдЬ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВред рдкреИрдЪ рдХреЗ рд░реВрдк рдореЗрдВ рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рдЕрдЧрд▓реЗ рдкреНрд░рдореБрдЦ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдПред

рдЗрд╕ рдХрд╛рд░рдг рд╕реЗ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдкреНрд░рд╛рдердорд┐рдХ рдХреБрдВрдЬреА рдХреЛ рдмрд▓ рдирд╣реАрдВ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдЬ рдореЗрдВ рд╕рдорд╛рдпреЛрдЬрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдФрд░ рдЗрд╕реЗ рдЪреИрдВрдЬ рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ рдХрд╛рдлреА рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИред рдкреИрдЪ рдХреЗ рд░реВрдк рдореЗрдВ рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рдЕрдЧрд▓реЗ рдкреНрд░рдореБрдЦ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдПред

рдореИрдВ рдЙрди рджрд╕рд┐рдпреЛрдВ рд▓реЛрдЧреЛрдВ рдХреЛ рдЬрд╛рдирддрд╛ рд╣реВрдВ рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рд╣рдореЗрд╢рд╛ рдХреЗрд╡рд▓ table.bigincrements('id') .primary() рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдЬрд┐рдХ рдХреЗ рд▓рд┐рдП рд▓рд┐рдЦрдХрд░ рдЕрдкрдирд╛ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рд▓рд┐рдЦрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╣рдореЗрд╢рд╛ рдЙрд╕реА рддрд░рд╣ рдХрд╛рдо рдХрд░рддрд╛ рд░рд╣рд╛ рд╣реИред

рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рд╡рд┐рдХрд▓реНрдк рдерд╛, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдпрд╣ рдмрддрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдкреНрд░рд╛рдердорд┐рдХ рдХреБрдВрдЬреА рдирд╣реАрдВ рдмрдирд╛рдИ рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдирд╣реАрдВ рд╣реИред рдХрдо рд╕реЗ рдХрдо рдореБрдЭреЗ рдкреНрд░рд╛рдердорд┐рдХ рдХреБрдВрдЬреА рдирд┐рд░реНрдорд╛рдг рдХреЛ рдЫреЛрдбрд╝рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдЬ / рдорд╛рдпрд╕реНрдХрд▓ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рдХреБрдЫ рднреА рдирд╣реАрдВ рдорд┐рд▓рд╛ред

рдпрд╣ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдкрд░ рдкреНрд░рдореБрдЦ рдмреИрдХрд╡рд░реНрдб рдХрдореНрдкреИрдЯрд┐рдмрд┐рд▓рд┐рдЯреА рдмреНрд░реЗрдХрд┐рдВрдЧ рдЪреЗрдВрдЬреЗрдЬ рд╣реЛрдЧрд╛ рдЬреЛ рдореБрдЭреЗ рдРрд╕рд╛ рд╣реЛрддреЗ рджреЗрдЦрдиреЗ рд╕реЗ рдирдлрд░рдд рд╣реЛрдЧреАред рдпрджрд┐ рд╣рдо рдЗрд╕ рдкреБрд░рд╛рдиреЗ рдорд╛рдЗрдЧреНрд░реЗрд╢рди API рдХреЛ рдкреИрдЪ рдЕрдк рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдЗрд╕рдХреЗ рд▓рд┐рдП рд╡рд░реНрдЬрдирд┐рдВрдЧ рд╕рдкреЛрд░реНрдЯ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ рддрд╛рдХрд┐ рд╕рднреА рд▓реЛрдЧ рдЕрдкрдиреЗ рд╣рд░ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рд╡рд░реНрдЬрди рдкрд░ рдкреБрд░рд╛рдиреЗ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдХреЛ рдареАрдХ рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХ рд╕рдХреЗрдВ (рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдХреЛрдб рдореЗрдВ рдЙрди рдмрджрд▓рд╛рд╡реЛрдВ рдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡реИрд╕рд╛ рд╣реА рдХрд╛рдо рдХрд░рдирд╛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдирд╛ рдХрдард┐рди рд╣реИред рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдкрд░реАрдХреНрд╖рдг рдЗрд╕рд▓рд┐рдП рдпрд╣ рдиреЗрдХреНрд╕ рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рдХреЛрдб рдореЗрдВ рдмрд╣реБрдд рдХрдордЬреЛрд░ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ)ред

рдХреЛрдИ рднреА рд╕рдорд╛рдзрд╛рди?

рдЗрд╕ рдкрд░ рдХреЛрдИ рднреА рд╕рдорд╛рдЪрд╛рд░?

рдЗрд╕ рдзрд╛рдЧреЗ рдиреЗ рдХреБрдЫ рд╣реА рд╕рдордп рдореЗрдВ рдЬреНрдпрд╛рджрд╛ рдзреНрдпрд╛рди рдирд╣реАрдВ рджрд┐рдпрд╛ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЬреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдЖрджрд░реНрд╢, рдкрд┐рдЫрдбрд╝рд╛-рд╕рдВрдЧрдд рд╕рдорд╛рдзрд╛рди рд╣реИ (рдЬреЛ рдХрд┐рд╕реА рднреА рдЫреЛрдЯреА рд░рд┐рд▓реАрдЬ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ) рдХреЛ рджреЛрд╣рд░рд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ: .increments() , рд╢рд╛рдпрдж primaryKey: false , рдЬреЛ рдореЗрдВ рдПрдХ рдирдпрд╛ рд╡рд┐рдХрд▓реНрдк рдЬреЛрдбрд╝реЗрдВ (DBMS рдХреЗ рд▓рд┐рдП рдЬрд╣рд╛рдВ рдпрд╣ рд╕рдВрднрд╡ рд╣реИ) рдЕрдкрдиреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рдкреНрд░рд╛рдердорд┐рдХ рдкреНрд░рдореБрдЦ рднрд╛рдЧ рдХреЛ рдирд┐рд╖реНрдХреНрд░рд┐рдп рдХрд░ рджреЗрддрд╛ рд╣реИред

рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкрд┐рдЫрдбрд╝рд╛ рд╕рдВрдЧрдд рд╣реИ рдХреНрдпреЛрдВрдХрд┐ .increments() рдЕрдкрдиреЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдмрд░рдХрд░рд╛рд░ рд░рдЦрддрд╛ рд╣реИред

рдХреНрдпрд╛ рд╣рдо рд╡реЗрддрди рд╡реГрджреНрдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рдХреЛрдИ рднреА рдЬрд╛рдирдХрд╛рд░реА?

рд╡рд╣ рдХреИрд╕реЗ рдЪрд▓ рд░рд╣рд╛ рд╣реИ ? рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рджрд░реНрдж рд╣реИ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ MSSQL рдореЗрдВ, рдкреАрдХреЗ рдмрд╛рдзрд╛ рдХрд╛ рдирд╛рдо рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди "PK__requests__DD771E3CC0CD0A5E" рдХреА рддрд░рд╣ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЗрд╕реЗ рдЫреЛрдбрд╝ рднреА рдирд╣реАрдВ рд╕рдХрддрд╛ рдФрд░ рдкреАрдХреЗ рдХреЛ рдХреБрдЫ рдФрд░ рдмрдирд╛ рд╕рдХрддрд╛ рд╣реВрдВред
рдореИрдВрдиреЗ рд╡рд┐рд╡рд╢рддрд╛ рдХреЗ рд▓рд┐рдП рдирд╛рдо рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдпрд╣ рд╡реЗрддрди рд╡реГрджреНрдзрд┐ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ ()

рдлрд┐рд░ рднреА рдЙрд╕ рдкрд░ рдХреБрдЫ рдирд╣реАрдВ?

.Increments рдореЗрдВ рднреА рд╡реИрдХрд▓реНрдкрд┐рдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рдмрд╣реБрдд рдкрд╕рдВрдж рдХрд░реЗрдВрдЧреЗ! рдХрдЪреНрдЪреЗ рдкреНрд░рд╢реНрди рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд╖реНрдЯрдкреНрд░рдж рд╣реИ рдЬреЛ рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдбреАрдмреА рдЪрд▓рд╛рддреЗ рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЙрддреНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рдорд░рджрдм, рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рд╕рд╛рдЗрдХреНрд▓рд╛рдЗрдЯ)ред рдЗрд╕ рдкрд░ рдХреЛрдИ рдЕрдкрдбреЗрдЯ? рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рдкреАрдЖрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ , рд▓реЗрдХрд┐рди рдпрд╣ рдереЛрдбрд╝реЗ рдЪреБрдк рд╣реЛ рдЧрдпрд╛?

рдореИрдВ рдлрд┐рд░ рд╕реЗ рджреВрд╕рд░рд╛ рд╣реВрдБ, рдореБрдЭреЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХрд▓ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдЙрд╕ 3 рд╕рдордп рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред

рдпрд╣рд╛рдБ рдПрдХ рд╣реА рдореБрджреНрджрд╛, рдкреАрдХреЗ рд╕реАрдо рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдкреИрд░рд╛рдореАрдЯрд░ рд╣реИред

# 2896 рдХреЗ рд╕рдорд╛рди рдЖрдк MySQL рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

t.primary(["cmdId", "deviceId"]);
t.specificType("cmdId", "int(10) unsigned AUTO_INCREMENT").notNullable();
t.string("deviceId", 16).notNullable().references("second_table.deviceId");
рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

arconus picture arconus  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

legomind picture legomind  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

hyperh picture hyperh  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

aj0strow picture aj0strow  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

ghost picture ghost  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ