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

MySQL InnoDB:非主キーを自動インクリメントします

    はい、できます。その列をインデックスにする必要があります。

    CREATE TABLE `test` (
      `testID` int(11) NOT NULL,
      `string` varchar(45) DEFAULT NULL,
      `testInc` int(11) NOT NULL AUTO_INCREMENT,
      PRIMARY KEY (`testID`),
      KEY `testInc` (`testInc`)
    ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;
    
    
    insert into test(
      testID,
     string
    )
    values (
    1,
        'Hello'
    );
    
    
    insert into test( 
    testID,
     string
    )
    values (
    2,
        'world'
    );
    

    'testInc'の値が自動インクリメントされる行を挿入します。しかし、これは本当に馬鹿げたことです。

    あなたはすでにそれを行う正しい方法を言っています:

    「comment_idPKを作成し、book_id、timestamp、user_idの一意のインデックスを介して整合性を適用します。」

    それはまさにあなたがそれをしなければならない方法です。将来のクエリに必要となるテーブルの適切な主キーキーを提供するだけでなく、驚き最小の原則



    1. Countを使用すると、Mysqlは1行のみを返します

    2. MySQL:1つのテーブルからレコードをカウントしてから、別のテーブルを更新します

    3. テキスト配列に入力と同様の値が含まれている行を検索する

    4. 移行の実行時に、そのようなファイルまたはディレクトリがない、またはそのようなホストが認識されていない