MySQLi - Sử dụng chuỗi

Chuỗi là một tập hợp các số nguyên 1, 2, 3, ... được tạo theo thứ tự theo yêu cầu. Chuỗi thường được sử dụng trong cơ sở dữ liệu vì nhiều ứng dụng yêu cầu mỗi hàng trong bảng phải chứa một giá trị duy nhất và chuỗi cung cấp một cách dễ dàng để tạo chúng. Chương này mô tả cách sử dụng chuỗi trong MySQLi.

Sử dụng cột AUTO_INCREMENT

Cách đơn giản nhất trong MySQLi để sử dụng Chuỗi là xác định một cột là AUTO_INCREMENT và để những thứ còn lại cho MySQLi xử lý.

Thí dụ

Hãy thử ví dụ sau. Thao tác này sẽ tạo bảng và sau đó, nó sẽ chèn một vài hàng trong bảng này, nơi nó không bắt buộc phải cung cấp ID bản ghi vì nó được MySQLi tự động tăng lên.

mysql>CREATE TABLE tutorials_auto(
   id INT UNSIGNED NOT NULL AUTO_INCREMENT, name VARCHAR(30) NOT NULL,PRIMARY KEY(id));
Query OK, 0 rows affected (0.28 sec)

mysql>INSERT INTO tutorials_auto(id,name) VALUES(NULL,'sai'),(NULL,'ram');
Query OK, 2 rows affected (0.12 sec)
Records: 2  Duplicates: 0  Warnings: 0

mysql> SELECT * FROM insect ORDER BY id;
+----+------+
| id | name |
+----+------+
|  1 | sai  |
|  2 | ram  |
+----+------+
2 rows in set (0.05 sec)

Nhận các giá trị AUTO_INCREMENT

LAST_INSERT_ID () là một hàm SQL, vì vậy bạn có thể sử dụng nó từ bên trong bất kỳ ứng dụng khách nào hiểu cách phát hành câu lệnh SQL. Nếu không, các tập lệnh PERL và PHP cung cấp các chức năng độc quyền để truy xuất giá trị tăng tự động của bản ghi cuối cùng.

Ví dụ về PERL

Sử dụng thuộc tính mysql_insertid để nhận giá trị AUTO_INCREMENT do truy vấn tạo ra. Thuộc tính này được truy cập thông qua một điều khiển cơ sở dữ liệu hoặc một điều khiển câu lệnh, tùy thuộc vào cách bạn đưa ra truy vấn. Ví dụ sau tham chiếu nó thông qua xử lý cơ sở dữ liệu:

$dbh->do ("INSERT INTO tutorials_auto (name,date,origin)
VALUES('moth','2001-09-14','windowsill')");
my $seq = $dbh->{mysqli_insertid};

Ví dụ PHP

Sau khi đưa ra một truy vấn tạo ra giá trị AUTO_INCREMENT, hãy truy xuất giá trị bằng cách gọi mysql_insert_id () -

mysql_query ("INSERT INTO tutorials_auto (name,date,origin)
VALUES('moth','2001-09-14','windowsill')", $conn_id);
$seq = mysqli_insert_id ($conn_id);

Đánh số lại một trình tự hiện có

Có thể có một trường hợp khi bạn đã xóa nhiều bản ghi khỏi một bảng và bạn muốn sắp xếp lại tất cả các bản ghi. Điều này có thể được thực hiện bằng cách sử dụng một thủ thuật đơn giản nhưng bạn phải rất cẩn thận làm như vậy nếu bảng của bạn đang kết hợp với bảng khác.

Nếu bạn xác định rằng việc sắp xếp lại một cột AUTO_INCREMENT là không thể tránh khỏi, thì cách thực hiện là bỏ cột khỏi bảng, sau đó thêm lại. Ví dụ sau cho thấy cách đánh số lại các giá trị id trong bảng côn trùng bằng kỹ thuật này:

mysql> ALTER TABLE tutorials_auto DROP id;
mysql> ALTER TABLE tutorials_auto
   -> ADD id INT UNSIGNED NOT NULL AUTO_INCREMENT FIRST,
   -> ADD PRIMARY KEY (id);

Bắt đầu một trình tự ở một giá trị cụ thể

Theo mặc định, MySQLi sẽ bắt đầu chuỗi từ 1 nhưng bạn có thể chỉ định bất kỳ số nào khác cũng như tại thời điểm tạo bảng. Sau đây là ví dụ mà MySQLi sẽ bắt đầu chuỗi từ 100.

mysql> CREATE TABLE tutorials_auto
   -> (
   -> id INT UNSIGNED NOT NULL AUTO_INCREMENT = 100,
   -> PRIMARY KEY (id),
   -> name VARCHAR(30) NOT NULL, 
   -> );

Ngoài ra, bạn có thể tạo bảng và sau đó đặt giá trị trình tự ban đầu bằng ALTER TABLE.

mysql> ALTER TABLE tutorials_auto AUTO_INCREMENT = 100;