Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Cột INT giống SERIAL

Với Informix DBMS, cột SERIAL sẽ không thay đổi sau khi nó được chèn vào; thực sự, bạn không thể cập nhật giá trị SERIAL nào cả. Bạn có thể chèn một giá trị mới với 0 làm giá trị - trong trường hợp đó, một giá trị mới được tạo - hoặc bạn có thể chèn một số giá trị khác. Nếu giá trị khác đã tồn tại và có một ràng buộc duy nhất, điều đó sẽ không thành công; nếu nó không tồn tại hoặc nếu không có ràng buộc duy nhất trên cột nối tiếp, thì nó sẽ thành công. Nếu giá trị được chèn lớn hơn giá trị lớn nhất đã chèn trước đó, thì số tiếp theo được chèn sẽ lại lớn hơn một lần nữa. Nếu số được chèn nhỏ hơn hoặc âm, thì không có ảnh hưởng gì đến số tiếp theo.

Vì vậy, bạn có thể cập nhật mà không thay đổi giá trị - không thành vấn đề. Nếu bạn cần thay đổi số, bạn sẽ phải xóa và chèn (hoặc chèn và xóa), trong đó phần chèn có số 0 trong đó. Nếu bạn thích nhất quán và sử dụng các giao dịch, bạn luôn có thể xóa và sau đó (lại) chèn hàng có cùng số hoặc với số 0 để kích hoạt một số mới. Điều này giả sử bạn có một ngôn ngữ lập trình chạy SQL; Tôi không nghĩ rằng bạn có thể điều chỉnh ISQL và Perform để tự động làm điều đó.

Vì vậy, tại thời điểm này, tôi không thấy sự cố trên Informix.

Với phiên bản IDS thích hợp (bất kỳ thứ gì được hỗ trợ), bạn cũng có thể sử dụng SEQUENCE để kiểm soát các giá trị được chèn vào. Điều này dựa trên cú pháp và khái niệm của Oracle; DB2 cũng hỗ trợ điều này. Các DBMS khác có các cơ chế tương đương (nhưng khác) khác để xử lý các số được tạo tự động.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tại sao MySQL không hỗ trợ độ chính xác mili giây / micro giây?

  2. Thực hiện nhiều đầu vào trong bảng mysql cùng một lúc với một nút gửi

  3. Hàm SCHEMA () trong MySQL

  4. Sự khác biệt và hạn chế động của chuỗi PHP

  5. Bất kỳ điểm nào trong việc sử dụng LIMIT trong truy vấn EXISTS?