Mysql
 sql >> Baza danych >  >> RDS >> Mysql

MySQL InnoDB:autoinkrementacja klucza innego niż podstawowy

Tak, możesz. Wystarczy, że ta kolumna będzie indeksem.

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

Wstawi wiersze z wartościami autoinkrementacji dla „testInc”. Jednak jest to naprawdę głupia rzecz do zrobienia.

Już powiedziałeś, jak to zrobić:

„Zrób comment_id PK i wyegzekwuj integralność za pomocą unikalnego indeksu dla book_id, timestamp, user_id”.

Dokładnie tak powinieneś to robić. Nie tylko zapewnia właściwy klucz podstawowy dla tabeli, który będzie potrzebny w przyszłych zapytaniach, ale także spełnia zasada najmniejszego zdziwienia .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak wyszukiwać dane wykresu/hierarchiczne w mysql

  2. mysql_result() oczekuje, że parametr 1 będzie zasobem, podana wartość logiczna

  3. Przyspieszenie (luzem) wstawiaj do MySQL za pomocą Pythona

  4. Powiązanie modelu trasy nie działa

  5. PHP:wywoływanie procedury składowanej MySQL z parametrami INPUT i OUTPUT (NOT INOUT)