Knex: Knex.Schema: рд╕рдордЧреНрд░ рдЕрджреНрд╡рд┐рддреАрдп рдХреБрдВрдЬреА рдХреИрд╕реЗ рдмрдирд╛рдПрдВ?

рдХреЛ рдирд┐рд░реНрдорд┐рдд 12 рдЕрдЧре░ 2013  ┬╖  12рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: knex/knex

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП,

ALTER TABLE users ADD UNIQUE KEY(LoginID, Email);
ALTER TABLE users ADD UNIQUE KEY(Email);
ALTER TABLE users ADD UNIQUE KEY(LoginID);

рдореИрдВ рдЗрд╕реЗ Knex.Schema.createTable рд╕рд╛рде рдХреИрд╕реЗ рдХрд░реВрдВ

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

рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдРрд╕рд╛ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП:

Knex.Schema.createTable('tableName', function(table) {
  table.unique(['LoginID', 'Email']);
  table.unique('LoginID');
  table.unique('Email');
});

рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдЕрдЧрд░ рдпрд╣ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рддреАрдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред

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

рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдРрд╕рд╛ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП:

Knex.Schema.createTable('tableName', function(table) {
  table.unique(['LoginID', 'Email']);
  table.unique('LoginID');
  table.unique('Email');
});

рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдЕрдЧрд░ рдпрд╣ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рддреАрдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред

рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдзрдиреНрдпрд╡рд╛рдж! Sequelize рд╕реЗ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдХреА рддреИрдпрд╛рд░реА рдХрд░ рд░рд╣рд╛ рд╣реИред

рдореИрдВ рдПрдХ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдЪрд▓рд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реВрдВ

knex.schema.createTable('users', function (table) {
        table.increments('id').primary();
        table.string('network', 3).notNullable();
        table.string('uid', 64).notNullable();
        table.unique(['network', 'uid']);
        table.timestamps();
}).then(function () {
        console.log('Users Table is Created!');
});

рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдПрдХ рдЕрдиреЛрдЦрд╛ рд╕реВрдЪрдХрд╛рдВрдХ рдирд╣реАрдВ рдорд┐рд▓реЗрдЧрд╛

CREATE TABLE `users` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `network` varchar(3) NOT NULL,
  `uid` varchar(64) NOT NULL,
  `created_at` datetime DEFAULT NULL,
  `updated_at` datetime DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

рдХреНрдпрд╛ рдЧрд▓рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ?

@ -o-ptz рдПрдкреАрдЖрдИ рдереЛрдбрд╝реА рджреЗрд░ рдкрд╣рд▓реЗ рдмрджрд▓ рдЧрдпрд╛ред рдбреЙрдХреНрд╕ рдХреЗ рдЕрдиреБрд╕рд╛рд░ , unique рдЕрдм рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдпреЛрдЧреНрдп рд╡рд┐рдзрд┐ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЖрдк рдЙрд╕реА рддрд░рд╣ рдХрд░реЗрдВрдЧреЗ рдЬреИрд╕реЗ рдЖрдк primary рдФрд░ notNullable рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВред

@bendrucker , рдзрдиреНрдпрд╡рд╛рджред

рд▓реЗрдХрд┐рди рдХреБрдЫ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
рдореИрдВ рдЗрд╕ рдХреЛрдб рдХреЛ рдЪрд▓рд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реВрдВ

knex.schema.createTable('users', function (table) {
    table.increments('id').primary();
    table.string('network', 3).notNullable();
    table.string('uid', 64).unique();
    table.timestamps();
})

рдореИрдВрдиреЗ рдбрд┐рдмрдЧ рдореЗрдВ рдпрд╣ рджреЗрдЦрд╛
--> ComQueryPacket { command: 3, sql: 'create table ( id int(11) unsigned not null auto_increment primary key, varchar(3) not null, uid varchar(64), datetime, datetime) default character set utf8' }

рдореБрдЭреЗ рдПрдХ рдЗрдВрдбреЗрдХреНрд╕ рдирд╣реАрдВ рдорд┐рд▓рд╛ред

 CREATE TABLE `users` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `network` varchar(3) NOT NULL,
  `uid` varchar(64) DEFAULT NULL,
  `created_at` datetime DEFAULT NULL,
  `updated_at` datetime DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

рдХреНрдпрд╛ рдЧрд▓рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ?

рдХреНрдпрд╛ рдкреНрд░рд╡рд╛рд╕ рдореЗрдВ рдПрдХ рд╕рдордЧреНрд░ рдЕрджреНрд╡рд┐рддреАрдп рд╕реВрдЪрдХрд╛рдВрдХ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╡реИрд╕реЗ рднреА рд╣реИ?

рдПрдХ рд╕рдордЧреНрд░ рдЕрджреНрд╡рд┐рддреАрдп рдмрд╛рдзрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдПрдХреАрдХрд░рдг рдкрд░реАрдХреНрд╖рдг рджреЗрдЦреЗрдВ:

https://github.com/tgriesser/knex/blob/master/test/integration/schema/index.js#L92

@bendrucker рдЬрдм рдЖрдк рд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓ рд╕реЗ рд▓рд┐рдВрдХ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдХреГрдкрдпрд╛ рдорд╛рд╕реНрдЯрд░ рдХреЗ рдмрдЬрд╛рдп рдЯреИрдЧ / рдХрдорд┐рдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:
рдЖрдкрдХрд╛ рд▓рд┐рдВрдХ рдЬреЛ рдЕрдм рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ: https://github.com/tgriesser/knex/blob/master/test/integration/schema/index.js#L92
VS рдЖрдкрдХрд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИ: https://github.com/tgriesser/knex/blob/0.5.11/test/integration/schema/index.js#L92
рдФрд░ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг (0.8.6) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░: https://github.com/tgriesser/knex/blob/0.8.6/test/integration/schema/index.js#L157

Protip: рдпрджрд┐ рдЖрдк github рдкрд░ рдмреНрд░рд╛рдЙрдЬрд╝ рдХрд░рддреЗ рд╕рдордп "y" рдХреБрдВрдЬреА рджрдмрд╛рддреЗ рд╣реИрдВ рддреЛ рдпрд╣ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рджреЗрдЦреА рдЬрд╛ рд░рд╣реА рд╡рд░реНрддрдорд╛рди рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рд╡рд░реНрддрдорд╛рди sha url рдореЗрдВ рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИред рд╕реБрдкрд░ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ, рдореИрдВ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдЬреАрдердм рдмрд╕ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдРрд╕рд╛ рдХрд░реЗрдЧрд╛ рдЬрдм рдЖрдк рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдореЗрдВ рдПрдХ рдЬреАрдПрдЪ рдпреВрдЖрд░рдПрд▓ рдореЗрдВ рдкреЗрд╕реНрдЯ рдХрд░реЗрдВрдЧреЗ

рдХреНрдпрд╛ рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рддрдм рд╕реЗ рд╣рдЯрд╛ рджреА рдЧрдИ рд╣реИ рдЬрдм рд╕реЗ рдпрд╣ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ рдирд╣реАрдВ рд╣реИ?

@RichardSimko рдкрд░реАрдХреНрд╖рдг рд╕реВрдЯ рдХреЗ table.unique([...]) рд╕рд┐рдВрдЯреИрдХреНрд╕ рдЕрднреА рднреА рд╕рдорд░реНрдерд┐рдд рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдкреНрд░рд▓реЗрдЦрди рдХреЗ рд╕рд╛рде рдмрдЧ рдЬреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИред

рд╣рд╛рдБ, рдореБрдЭреЗ рдПрд╣рд╕рд╛рд╕ рд╣реБрдЖ рдХрд┐ рдпрд╣ рдЕрднреА рднреА рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ, рдореБрдЭреЗ рдмрд╕ рдЪрд┐рдВрддрд╛ рдереА рдХрд┐ рдпрд╣ рдбреЙрдХреНрд╕ рдореЗрдВ рдирд╣реАрдВ рд╣реЛрдиреЗ рдХреЗ рдХрд╛рд░рдг рдЗрд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рддреЛ table.unique([...]) рдФрд░ table.primary([...]) рдмреАрдЪ рдХреНрдпрд╛ рдЕрдВрддрд░ рд╣реИ?

рдбреЙрдХреНрд╕ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ primary([...]) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрдВрдкреЛрдЬрд┐рдЯ рдкреНрд░рд╛рдЗрдорд░реА рдХреАрдЬ рдХрд░рдиреЗ рдХрд╛ рдЙрдЪрд┐рдд рддрд░реАрдХрд╛ рд╣реИ:

рдЬрдм рдХрд┐рд╕реА рдПрдХрд▓ рд╕реНрддрдВрдн рдкрд░ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдЙрд╕ рддрд╛рд▓рд┐рдХрд╛ рдХреЛ рддрд╛рд▓рд┐рдХрд╛ рдХреА рдкреНрд░рд╛рдердорд┐рдХ рдХреБрдВрдЬреА рдХреЗ рд░реВрдк рдореЗрдВ рд╕реЗрдЯ рдХрд░реЗрдЧрд╛ред рдПрдХ рдХрдВрдкрд╛рдЙрдВрдб рдкреНрд░рд╛рдердорд┐рдХ рдХреБрдВрдЬреА рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдХреЙрд▓рдо рдирд╛рдореЛрдВ рдХреА рдПрдХ рд╕рд░рдгреА рдкрд╛рд╕ рдХрд░реЗрдВ: table.primary(['column1', 'column2']) ред рдЬрдм рддрдХ constraintName рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддрдм рддрдХ рдмрд╛рдзрд╛ рдирд╛рдо tablename_pkey рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред

http://knexjs.org/#Schema -primary

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕