sql >> データベース >  >> RDS >> Mysql

自動インクリメントを使用したmysqlの2列の主キー

    myisamを使用している場合

    http://dev.mysql.com/doc /refman/5.0/en/example-auto-increment.html

    MyISAMおよびBDBテーブルの場合、複数列インデックスの2次列にAUTO_INCREMENTを指定できます。この場合、AUTO_INCREMENT列の生成値は、MAX(auto_increment_column)+ 1 WHEREprefix=given-prefixとして計算されます。これは、データを順序付けられたグループに入れたい場合に便利です。

    CREATE TABLE animals (
        grp ENUM('fish','mammal','bird') NOT NULL,
        id MEDIUMINT NOT NULL AUTO_INCREMENT,
        name CHAR(30) NOT NULL,
        PRIMARY KEY (grp,id)
    ) ENGINE=MyISAM;
    
    INSERT INTO animals (grp,name) VALUES
        ('mammal','dog'),('mammal','cat'),
        ('bird','penguin'),('fish','lax'),('mammal','whale'),
        ('bird','ostrich');
    
    SELECT * FROM animals ORDER BY grp,id;
    
    Which returns:
    
    +--------+----+---------+
    | grp    | id | name    |
    +--------+----+---------+
    | fish   |  1 | lax     |
    | mammal |  1 | dog     |
    | mammal |  2 | cat     |
    | mammal |  3 | whale   |
    | bird   |  1 | penguin |
    | bird   |  2 | ostrich |
    +--------+----+---------+
    

    あなたの例:

    mysql> CREATE TABLE mytable (
        ->     table_id MEDIUMINT NOT NULL AUTO_INCREMENT,
        ->     database_id MEDIUMINT NOT NULL,
        ->     other_column CHAR(30) NOT NULL,
        ->     PRIMARY KEY (database_id,table_id)
        -> ) ENGINE=MyISAM;
    Query OK, 0 rows affected (0.03 sec)
    
    mysql> INSERT INTO mytable (database_id, other_column) VALUES
        ->     (1,'Foo'),(1,'Bar'),(2,'Baz'),(1,'Bam'),(2,'Zam'),(3,'Zoo');
    Query OK, 6 rows affected (0.00 sec)
    Records: 6  Duplicates: 0  Warnings: 0
    
    mysql> SELECT * FROM mytable ORDER BY database_id,table_id;
    +----------+-------------+--------------+
    | table_id | database_id | other_column |
    +----------+-------------+--------------+
    |        1 |           1 | Foo          |
    |        2 |           1 | Bar          |
    |        3 |           1 | Bam          |
    |        1 |           2 | Baz          |
    |        2 |           2 | Zam          |
    |        1 |           3 | Zoo          |
    +----------+-------------+--------------+
    6 rows in set (0.00 sec)
    


    1. PyInstaller、スペックファイル、ImportError:「blah」という名前のモジュールがありません

    2. データベース暗号化:3つのタイプとそれらが必要な理由

    3. PostgreSQLのMIN()関数

    4. Postgres-CREATE TABLE FROM SELECT