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

Đặt giá trị mặc định cho một cột trong SQLite:Ràng buộc DEFAULT

Khi tạo bảng trong SQLite, bạn có tùy chọn thêm các ràng buộc vào mỗi cột.

Một trong những ràng buộc như vậy là DEFAULT ràng buộc.

DEFAULT ràng buộc cho phép bạn chỉ định một giá trị sẽ được sử dụng trong trường hợp không có giá trị nào được cung cấp cho cột đó khi một hàng mới được chèn vào.

Nếu bạn không sử dụng DEFAULT , thì giá trị mặc định cho một cột là NULL .

Giá trị mặc định có thể có

Giá trị mặc định rõ ràng của DEFAULT ràng buộc có thể là bất kỳ điều nào sau đây:

  • một hằng số chuỗi
  • một hằng số đốm màu
  • một số có chữ ký
  • bất kỳ biểu thức hằng nào được đặt trong dấu ngoặc đơn.
  • CURRENT_TIME
  • CURRENT_DATE
  • CURRENT_TIMESTAMP
  • NULL

Ví dụ

Đây là một ví dụ để chứng minh.

CREATE TABLE Products( 
    ProductId INTEGER PRIMARY KEY, 
    ProductName,
    Price DEFAULT 0.00
);

Ở đây tôi đã thêm một DEFAULT ràng buộc đối với Giá cột. Trong trường hợp này, giá trị mặc định là 0,00 .

Bây giờ khi tôi chèn một hàng mới mà không chỉ định giá trị cho Giá , giá trị mặc định được sử dụng.

INSERT INTO Products ( ProductId, ProductName ) 
VALUES (1, 'Long Weight');

SELECT * FROM Products;

Kết quả:

ProductId   ProductName  Price     
----------  -----------  ----------
1           Long Weight  0.0       

Giá trị rõ ràng

Tất nhiên, giá trị mặc định chỉ được sử dụng khi bạn không cung cấp giá trị một cách rõ ràng. Nếu bạn làm vậy, thì giá trị đó sẽ được sử dụng thay thế.

Đây là một ví dụ khác. Lần này, tôi cung cấp một cách rõ ràng giá trị cho Giá đó cột.

INSERT INTO Products ( ProductId, ProductName, Price ) 
VALUES (2, 'Left-Handed Screwdriver', 19.99);

SELECT * FROM Products;

Kết quả:

ProductId   ProductName                Price     
----------  -------------------------  ----------
1           Long Weight                0.0       
2           Left-Handed Screwdriver    19.99     

NULL rõ ràng

Ví dụ trước cũng áp dụng cho NULL được cung cấp rõ ràng giá trị.

Để chứng minh điều này, đây là điều sẽ xảy ra nếu tôi chèn NULL một cách rõ ràng vào Giá cột.

INSERT INTO Products ( ProductId, ProductName, Price ) 
VALUES (3, 'Elbow Grease', NULL);

SELECT * FROM Products;

Kết quả:

ProductId   ProductName               Price     
----------  ------------------------  ----------
1           Long Weight               0.0       
2           Left-Handed Screwdriver   19.99     
3           Elbow Grease                        

Lần này là Giá cột là NULL , bởi vì đó là những gì tôi đã chèn rõ ràng vào cột đó.

Để ngăn điều này xảy ra, hãy xem Cách chuyển đổi giá trị NULL thành giá trị mặc định của cột khi chèn dữ liệu vào SQLite.

Dấu thời gian mặc định

Trong ví dụ này, tôi tạo một bảng khác. Lần này tôi đặt giá trị mặc định thành dấu thời gian hiện tại.

CREATE TABLE Types( 
    TypeId INTEGER PRIMARY KEY, 
    Type,
    DateInserted DEFAULT CURRENT_TIMESTAMP
);

Và bây giờ là một số dữ liệu.

INSERT INTO Types (Type) 
VALUES ( 'Hardware' );

SELECT * FROM Types;

Kết quả:

TypeId      Type        DateInserted       
----------  ----------  -------------------
1           Hardware    2020-06-05 00:21:57

Dấu thời gian được chèn như mong đợi.

Giá trị Tự động Tăng lên làm Giá trị Mặc định

Lưu ý rằng trong ví dụ trước, tôi cũng không cung cấp giá trị cho TypeId nhưng nó vẫn tự động tạo ra một giá trị mặc định.

Trong trường hợp này, giá trị mặc định không phải do DEFAULT hạn chế. Đó là do cột này là cột khóa chính được tạo bằng INTEGER PRIMARY KEY . Khi bạn xác định một cột bằng INTEGER PRIMARY KEY , cột sẽ tự động trở thành cột tự động tăng dần.

Để chứng minh điều này kỹ lưỡng hơn, đây là điều sẽ xảy ra nếu tôi chèn thêm một số hàng.

INSERT INTO Types (Type) 
VALUES 
  ( 'Software' ),
  ( 'Hardcopy' );

SELECT * FROM Types;

Kết quả:

TypeId      Type        DateInserted       
----------  ----------  -------------------
1           Hardware    2020-06-05 00:21:57
2           Software    2020-06-05 00:22:14
3           Hardcopy    2020-06-05 00:22:14

Để biết thêm thông tin về các cột tự động tăng dần, hãy xem Cách AUTOINCREMENT hoạt động trong SQLite và Cách tạo một cột tự động tăng trong SQLite.

Biểu thức dưới dạng Giá trị Mặc định

Bạn cũng có thể sử dụng một biểu thức hằng làm giá trị mặc định. Để làm điều này, biểu thức phải được đặt trong dấu ngoặc đơn.

Đây là một ví dụ.

CREATE TABLE Person( 
    PersonId INTEGER PRIMARY KEY, 
    Name,
    Entered DEFAULT (round(julianday('now'))),
    Deadline  DEFAULT (round(julianday('now')) + 10.5)
);

Và bây giờ là một số dữ liệu.

INSERT INTO Person (Name) 
VALUES ( 'Fred' );

SELECT * FROM Person;

Kết quả:

PersonId    Name        Entered     Deadline  
----------  ----------  ----------  ----------
1           Fred        2459006.0   2459016.5 

Lưu ý rằng biểu thức phải là một biểu thức hằng. Một biểu thức hằng là một biểu thức chỉ chứa các hằng số.

Nếu bạn cố gắng sử dụng một biểu thức không chỉ chứa hằng số, bạn sẽ gặp lỗi.

CREATE TABLE Person( 
    PersonId INTEGER PRIMARY KEY, 
    FirstName,
    LastName,
    UserName DEFAULT (FirstName || LastName)
);

Kết quả:

Error: default value of column [UserName] is not constant

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm thế nào để lọc trong một đến nhiều mối quan hệ với db phòng android

  2. cách lấy hình ảnh từ có thể vẽ theo tên của chúng trong cơ sở dữ liệu sqlite và sau đó hiển thị nó trong dạng xem danh sách

  3. Tạo cơ sở dữ liệu trong SQLite

  4. Cách tạo một số ngẫu nhiên trong một phạm vi được chỉ định trong SQLite

  5. Điều chỉnh hiệu suất SQLite