SAP HANA - Chuỗi SQL
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.
Sử dụng cột AUTO_INCREMENT
Cách đơn giản nhất trong MySQL để sử dụng trình tự là xác định một cột là AUTO_INCREMENT và để phần còn lại của MySQL 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 không yêu cầu cung cấp ID bản ghi vì nó được MySQL tự động tăng dần.
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, 0 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, 3 rows affected (0.02 sec)
Records: 3 Duplicates: 0 Warnings: 0
mysql> SELECT * FROM INSECT ORDER BY id;
+----+-------------+------------+------------+
| id | name | date | origin |
+----+-------------+------------+------------+
| 1 | housefly | 2001-09-10 | kitchen |
| 2 | millipede | 2001-09-10 | driveway |
| 3 | grasshopper | 2001-09-10 | front yard |
+----+-------------+------------+------------+
3 rows in set (0.00 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. Mặt khác, 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 dần 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 xử lý cơ sở dữ liệu hoặc một xử lý 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 INSECT (name,date,origin)
VALUES('moth','2001-09-14','windowsill')");
my $seq = $dbh->{mysql_insertid};
Ví dụ PHP
Sau khi phát hành 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 INSECT (name,date,origin)
VALUES('moth','2001-09-14','windowsill')", $conn_id);
$seq = mysql_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 tham gia, 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 INSECT DROP id;
mysql> ALTER TABLE insect
-> 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, MySQL sẽ bắt đầu chuỗi từ 1 nhưng bạn có thể chỉ định bất kỳ số nào khác tại thời điểm tạo bảng. Sau đây là ví dụ mà MySQL sẽ bắt đầu chuỗi 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
);
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.