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

Làm thế nào để làm cho Khóa chính có chữ số X trong PostgreSQL?

Bạn đang trộn lẫn hai khía cạnh:

  • kiểu dữ liệu cho phép một số giá trị nhất định cho cột PK của bạn
  • định dạng bạn đã chọn để hiển thị

AUTO_INCREMENT là một khái niệm phi tiêu chuẩn của MySQL, SQL Server sử dụng IDENTITY (1,1) , v.v.
Sử dụng sê-ri cột trong Postgres:

CREATE TABLE users (
  user_id serial PRIMARY KEY
, ...
)

Đó là kiểu giả được triển khai dưới dạng số nguyên kiểu dữ liệu với bản vẽ mặc định cột từ SEQUENCE <được đính kèm / code> . số nguyên dễ dàng đủ lớn cho trường hợp của bạn (-2147483648 đến +2147483647).

Nếu bạn thực sự cần thực thi các số có tối đa 8 chữ số thập phân, hãy thêm KIỂM TRA ràng buộc :

CONSTRAINT id_max_8_digits CHECK (user_id BETWEEN 0 AND < 99999999)

Để hiển thị số theo bất kỳ kiểu dáng nào bạn muốn - 0 được đệm thành 8 chữ số, đối với trường hợp của bạn, hãy sử dụng to_char () :

SELECT to_char(user_id, '00000000') AS user_id_8digit
FROM   users;

Đó là rất nhanh. Lưu ý rằng đầu ra là text bây giờ, không phải số nguyên .
SQL Fiddle.

Một số thứ khác dành riêng cho MySQL trong mã của bạn:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tham gia bên ngoài trái hoạt động như tham gia bên trong

  2. Sqlalchemy và PostgreSql:Làm thế nào để đặt khóa chính theo cách thủ công mà không có xung đột trong tương lai?

  3. vấn đề khi chạy liquibase với maven và postgres-db

  4. Làm cách nào để chia kết quả truy vấn thành các cột riêng biệt?

  5. không hiểu json_agg trong ngữ cảnh này