Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

MySQL InnoDB:autoincrement non-primary key

Có bạn có thể. Bạn chỉ cần đặt cột đó thành một chỉ mục.

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

Sẽ chèn các hàng có giá trị tăng tự động cho 'testInc'. Tuy nhiên, đây là một điều thực sự ngớ ngẩn.

Bạn đã nói đúng cách để làm điều đó:

"Đặt comment_id PK và thực thi tính toàn vẹn thông qua một chỉ mục duy nhất trên book_id, timestamp, user_id."

Đó chính xác là cách mà bạn nên làm. Nó không chỉ cung cấp cho bạn một khóa chính thích hợp cho bảng mà bạn sẽ cần cho các truy vấn trong tương lai, nó còn đáp ứng nguyên tắc ít gây ngạc nhiên nhất .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Hàm MySQL ASIN () - Trả về Arc Sine của một số

  2. chỉ số chính Vs chỉ số phụ:sự khác biệt về hiệu suất

  3. Trả lại tất cả các hàng có giá trị MAX trong SQL?

  4. Kiểm tra xem giá trị có tồn tại hay không trước khi chèn vào MySQL DB trong tập lệnh PHP

  5. Truy vấn Rails 3 với điều kiện có số lượng liên kết