2009-11-06 17 views
9

Làm cách nào để thay đổi số tiền auto_increment trường trong tăng MySQL từ từ mặc định (1) sang n?Thay đổi các trường auto_increment bước tăng thêm

+3

Bạn có muốn thay đổi giá trị tiếp theo được sử dụng hay bước đang được sử dụng giữa các giá trị (ví dụ: giá trị bước 2, sử dụng 1, 3, 5, 7 v.v ...)? –

+0

xin lỗi nếu câu hỏi là mơ hồ có đúng tôi muốn auto_increment nên được thực hiện như đã nêu bởi bạn (như danh tính (1,3) trong máy chủ sql mà tăng giá trị tiếp theo bằng 3) – sansknwoledge

+0

@sansknwoledge - Tôi đã chỉnh sửa câu hỏi để hy vọng làm cho nó hỏi những gì bạn có nghĩa là! –

Trả lời

2

Bạn có thể thay đổi nó bằng cách sử ALTER TABLE:

ALTER TABLE table AUTO_INCREMENT = n; 

Hoặc nếu bạn muốn làm thiết lập nó từ đầu:

CREATE TABLE table (...) AUTO_INCREMENT = n; 
+0

Tôi không * nghĩ * điều đó làm những gì anh ta muốn (nó trả lời câu hỏi anh ta hỏi trong phần câu hỏi của anh ta, nhưng không phải là câu hỏi trong tiêu đề). Câu hỏi chắc chắn là mơ hồ. –

+1

Vâng, điều này không làm những gì anh ấy đang cố gắng làm (bây giờ tôi đã chỉnh sửa câu hỏi để hy vọng làm cho nó rõ ràng hơn). –

7

Nếu bạn muốn thay đổi bước autoincrement từ 1 đến N thì có một giải pháp. Nó có thể được thực hiện trên phía máy chủ MySQL: tìm tùy chọn khởi động '--auto-increment-increment' hoặc sử dụng lệnh sau SET @@auto_increment_increment=2;, nhưng được cảnh báo rằng đây là một thay đổi trên máy chủ (tất cả các bảng sẽ tăng thêm 2).

giải pháp Unortodox thể mà có thể được xem xét:

  1. Launch hai máy chủ MySQL trên cùng một máy, với các cảng khác nhau (một với auto_increment_increment=1 khác với auto_increment_increment=2)
  2. Sử dụng một số serverside kỳ diệu (PHP, ASP,? ??) kết hợp với việc tắt các bảng auto_increment để tính toán theo cách thủ công (xem nhanh ở id cuối cùng và + = 2 sẽ là ok) và cung cấp id trong truy vấn INSERT.

Some official MySQL FAQ

+0

hi, tôi đã kiểm tra faq i am chút nhầm lẫn [bạn có thể đặt mỗi máy chủ để tạo các giá trị gia tăng tự động không xung đột với các máy chủ khác. Giá trị tăng -auto-increment phải lớn hơn số lượng máy chủ (từ trang đó)] bất kỳ phần nào của cơ thể có thể giải thích điều này không? – sansknwoledge

+4

ý tưởng là: máy chủ = {db1, db2, db3}; db01: {- auto-increment-offset = 0; - tăng tự động gia tăng = 3}; db02: {- auto-increment-offset = 1; - auto-increment-increment = 3}; db03: {--auto-increment-offset = 2; - tăng tự động gia tăng = 3}; vì vậy, db1 chỉ tạo ID trong đó (n% 3) == 0, cho db2 (n% 3) == 1, cho db3 (n% 3) == 2; tức là db1: "3,6,9, ..." db2: "1,4,7, ..." db3: "2,5,8" -> không có xung đột id – Piskvor

+0

@Piskvor cảm ơn bạn đã làm rõ, nhưng nếu tôi đang có nhiều hơn một bảng trong db của tôi tất cả với các cột autogenerate và tôi muốn chỉ có một bảng để tăng trong các bước nói 2 và phần còn lại làm theo 3 những gì tôi nên làm gì? – sansknwoledge

-3
alter table <table name> auto_increment=n 

trong đó n là số bạn muốn bắt đầu

+0

Điều này không điều chỉnh bước nó điều chỉnh giá trị bắt đầu. –

+0

Đây chỉ là giá trị bắt đầu –

-2

Bạn cũng có thể sử dụng ALTER SEQUENCE sequence_name tăng bởi N trong đó N là giá trị incremnent mới.

+1

-1 Điều này không áp dụng cho MySQL. –

+0

Ồ, đó là một sai lầm lớn –

Các vấn đề liên quan