10/10/2018, 00:13

PHP/MySQL: Kiểu "Auto Increment" ???

Trong Table em đặt cột đầu tiên "id_table" là kiểu "auto increment", như vậy cột id_table luôn là 1 dãy số liên tiếp bắt đầu từ 1.

Nhưng khi em xóa đi 1 dòng thì dãy số trong cột id_table bị đứt quãng tại dòng em xóa(VD:có 5 dòng trong table => cột id_table sẽ là 1 2 3 4 5, nếu em xóa dòng đầu tiên thì table còn 4 dòng và id_table sẽ là 2 3 4 5)

làm thế nào để sau khi xóa dòng đầu thì id_table là 1 2 3 4 ???
herofit viết 02:26 ngày 10/10/2018
Được gửi bởi nemo2007
Trong Table em đặt cột đầu tiên "id_table" là kiểu "auto increment", như vậy cột id_table luôn là 1 dãy số liên tiếp bắt đầu từ 1.

Nhưng khi em xóa đi 1 dòng thì dãy số trong cột id_table bị đứt quãng tại dòng em xóa(VD:có 5 dòng trong table => cột id_table sẽ là 1 2 3 4 5, nếu em xóa dòng đầu tiên thì table còn 4 dòng và id_table sẽ là 2 3 4 5)

làm thế nào để sau khi xóa dòng đầu thì id_table là 1 2 3 4 ???
mình hiểu ý tưởng cảu bạn, nhưng nếu CSDL bạn lớn, bạn làm thay đổi id như vậy dẫn đến sai sót nhầm lẫn trong việc liên kết với các bảng khác. Nếu bạn sợ dãy id sẽ bị hổng nhiều nếu dữ liệu xóa và thêm nhiều. Bạn có thể lưu lại các ID của các bản ghi khi xóa, để khi nhập dữ liệu nếu bảng đó còn ID thì ta lấy id đó để insert không thì insert không truyền giá trị cho ID nó sẽ tự động tăng

=> chúc bạn thành công
temp2 viết 02:18 ngày 10/10/2018
đã mún tăng tự động thì dùng nó, còn nếu mún tự mình tăng thì ko dùng nó => đơn giản là vậy
vistaboy viết 02:13 ngày 10/10/2018
mình đồng ý với ý kiến của ông temp2,đã muốn tăng tự động thì quan tâmm đến ID làm gì
lkn2 viết 02:30 ngày 10/10/2018
*Chú ý: Backup database trước khi làm

Nếu dữ liệu tương đối ít thì có thể làm theo những bước sau:
- Export table đó ra, bỏ đi filed Auto Increment trong câu query INSERT INTO. Ví dụ:
PHP Code:
INSERT INTO `test` (`id`, `name`) VALUES(1'test');
//Sửa thành
INSERT INTO `test` (`name`) VALUES('test'); 
- Sau đó TRUNCATE table đó: TRUNCATE TABLE `test`
- Cuối cùng import vào lại là số thứ tự sẽ được xếp lại.
cuteo_saigon viết 02:18 ngày 10/10/2018
chưa thấy ai làm kiểu rứa bao giờ cả vì

- Nếu dùng cái auto_id ấy là key và có quan hệ ( có kéo relationship ) với các table khác thì DBMS làm việc nặng nhọc lắm.
- Nếu làm key mà có dùng id đó trong các table khác nhưng ko kéo relation ship thì data sẽ đi tong hết ráo.

vài lời góp ý theo cách nhìn của tớ
s.code viết 02:22 ngày 10/10/2018
Hic. TÔi thì chưa bao giờ ko dùng cả. Thấy thuận tiện và hiệu quả.
nemo2007 viết 02:20 ngày 10/10/2018
Em cũng mới học PHP/MySQL thôi, thấy thằng Auto Increment có tính chất tự tăng khi add rất hay nên cứ nghĩ nó cũng sẽ tự giảm khi delete, khi em delete thì ko thấy nó tự giảm nên hỏi do tò mò thôi.

Mục đích chính của Auto Increment hình như là để liên kết các bảng, còn chuyện tự tăng ID chắc chỉ để đảm bảo không có sự trùng lặp ID.

Thanks all !!!
s.code viết 02:23 ngày 10/10/2018
Chài ơi. Cậu này. Cậu vào forum này chẳng hạn.

http://www.ddth.com/showthread.php?t=197749

ID = 197749

Nếu giả sử có xóa 1 topic nào đó thì cái ID này sẽ thay đổi (cái bạn đang muốn)

Thế là ai lỡ send cái link này đi thì coi như ko đọc dc.

Giờ thì hiểu thuốc fukaka diệt trừ giun thế nào chưa
herofit viết 02:23 ngày 10/10/2018
Được gửi bởi s.code
Chài ơi. Cậu này. Cậu vào forum này chẳng hạn.

http://www.ddth.com/showthread.php?t=197749

ID = 197749

Nếu giả sử có xóa 1 topic nào đó thì cái ID này sẽ thay đổi (cái bạn đang muốn)

Thế là ai lỡ send cái link này đi thì coi như ko đọc dc.

Giờ thì hiểu thuốc fukaka diệt trừ giun thế nào chưa
bác này làm PR cho thuốc tẩy giun đó ah
Bài liên quan
0