http://vietjack.com/sql/index.jsp Copyright © vietjack.com Sử dụng Sequence SQL Một Sequence tập hợp số nguyên 1, 2, 3, … mà tạo theo nhu cầu Các Sequence thường xuyên sử dụng Database nhiều ứng dụng yêu cầu hàng bảng chứa giá trị nhất, Sequence cung cấp cách dễ dàng để tạo chúng Chương trình bày cách sử dụng Sequence MySQL Sử dụng AUTO_INCREMENT column Cách đơn giản MySQL để sử dụng Sequence để định nghĩa cột dạng AUTO_INCREMENT để phần lại cho MySQL xử lý Ví dụ Ví dụ sau tạo bảng sau chèn số hàng vào bảng này, mà không bắt buộc cung cấp ghi ID tự động tăng MySQL mysql> CREATE TABLE INSECT -> ( -> id INT UNSIGNED NOT NULL AUTO_INCREMENT, -> PRIMARY KEY (id), -> name VARCHAR(30) NOT NULL, # type of insect -> date DATE NOT NULL, # date collected -> origin VARCHAR(30) NOT NULL # where collected ); Query OK, rows affected (0.02 sec) mysql> INSERT INTO INSECT (id,name,date,origin) VALUES -> (NULL,'housefly','2001-09-10','kitchen'), -> (NULL,'millipede','2001-09-10','driveway'), -> (NULL,'grasshopper','2001-09-10','front yard'); Query OK, rows affected (0.02 sec) Records: Duplicates: Warnings: mysql> SELECT * FROM INSECT ORDER BY id; + + -+ + + | id | name | date | origin | + + -+ + + http://vietjack.com/ Trang chia sẻ học online miễn phí Page http://vietjack.com/sql/index.jsp Copyright © vietjack.com | | housefly | 2001-09-10 | kitchen | | | millipede | 2001-09-10 | driveway | | | grasshopper | 2001-09-10 | front yard | + + -+ + + rows in set (0.00 sec) Lấy giá trị AUTO_INCREMENT Hàm LAST_INSERT_ID() hàm SQL, thế, bạn sử dụng từ bên Client mà hiểu cách thông báo lệnh SQL Riêng PERL PHP Script cung cấp hàm riêng để lấy giá trị AUTO_INCREMENT ghi cuối Ví dụ cho PERL Sử dụng thuộc tính mysql_insertid để lấy giá trị AUTO_INCREMENT tạo truy vấn Thuộc tính truy cập thông qua Database Handle Statement Handle, phụ thuộc vào cách bạn thông báo truy vấn Ví dụ sau tham chiếu thơng qua Database Handle $dbh->do ("INSERT INTO INSECT (name,date,origin) VALUES('moth','2001-09-14','windowsill')"); my $seq = $dbh->{mysql_insertid}; Ví dụ cho PHP Sau thơng báo truy vấn mà tạo giá trị AUTO_INCREMENT, lấy giá trị cách gọi hàm mysql_insert_id(): mysql_query ("INSERT INTO INSECT (name,date,origin) VALUES('moth','2001-09-14','windowsill')", $conn_id); $seq = mysql_insert_id ($conn_id); Đánh số lại Sequence tồn Có tình bạn xóa nhiều ghi từ bảng bạn muốn đánh số lại tất ghi Điều thực sử dụng mẹo đơn giản, bạn nên cẩn thận thực trường hợp bảng bạn kết hợp với bảng khác Nếu bạn định việc đánh số lại cột AUTO_INCREMENT tránh khỏi, cách để thực xóa cột từ bảng, sau thêm lại Ví dụ sau minh họa cách đánh số lại giá trị id bảng INSECT sử dụng kỹ thuật http://vietjack.com/ Trang chia sẻ học online miễn phí Page http://vietjack.com/sql/index.jsp Copyright © vietjack.com mysql> ALTER TABLE INSECT DROP id; mysql> ALTER TABLE insect -> ADD id INT UNSIGNED NOT NULL AUTO_INCREMENT FIRST, -> ADD PRIMARY KEY (id); Bắt đầu Sequence giá trị cụ thể Theo mặc định, MySQL bắt đầu Sequence từ 1, bạn xác định số khác bạn muốn thời điểm tạo bảng Ví dụ sau bắt đầu Sequence từ 100 mysql> CREATE TABLE INSECT -> ( -> id INT UNSIGNED NOT NULL AUTO_INCREMENT = 100, -> PRIMARY KEY (id), -> name VARCHAR(30) NOT NULL, # type of insect -> date DATE NOT NULL, # date collected -> origin VARCHAR(30) NOT NULL # where collected ); Cách khác, bạn tạo bảng sau thiết lập giá trị khởi tạo cho Sequence với lệnh ALTER TABLE mysql> ALTER TABLE t AUTO_INCREMENT = 100; http://vietjack.com/ Trang chia sẻ học online miễn phí Page ... http://vietjack.com /sql/ index.jsp Copyright © vietjack.com mysql> ALTER TABLE INSECT DROP id; mysql> ALTER TABLE insect -> ADD id INT UNSIGNED NOT NULL AUTO_INCREMENT FIRST, -> ADD PRIMARY KEY (id); Bắt đầu Sequence. .. Sequence giá trị cụ thể Theo mặc định, MySQL bắt đầu Sequence từ 1, bạn xác định số khác bạn muốn thời điểm tạo bảng Ví dụ sau bắt đầu Sequence từ 100 mysql> CREATE TABLE INSECT -> ( -> id INT... hàm SQL, thế, bạn sử dụng từ bên Client mà hiểu cách thông báo lệnh SQL Riêng PERL PHP Script cung cấp hàm riêng để lấy giá trị AUTO_INCREMENT ghi cuối Ví dụ cho PERL Sử dụng thuộc tính mysql_insertid