MySQL là một RDBMS dễ sử dụng. Nhiều tổ chức thích sử dụng nó vì khả năng bảo trì dễ dàng, dễ dàng chuẩn bị các lược đồ, thủ tục được lưu trữ, trình kích hoạt và bảo trì cơ sở dữ liệu. Trong bài viết này, chúng ta hãy xem cách cập nhật Dấu thời gian hiện tại trong MySQL
Bước 1. Tạo cơ sở dữ liệu
Đầu tiên chúng ta tạo cơ sở dữ liệu. Ở đây GEEKSFORGEEKS là tên db
Truy vấn
CREATE DATABASE GEEKSFORGEEKS;
Bước 2. Làm cho cơ sở dữ liệu hoạt động
Truy vấn
USE GEEKSFORGEEKS;
Bước 3. Tạo một nhân viên bảng với trường empLoginTime dưới dạng Dấu thời gian
Truy vấn
CREATE TABLE employee [ empId int NOT NULL, empName VARCHAR[20], empLoginTime TIMESTAMP ];
đầu ra
Bước 4. Chúng ta có thể đặt múi giờ như sau
Truy vấn
SET TIME_ZONE = '+00:00';
Nếu chúng tôi muốn thay đổi Múi giờ, điều đó cũng có thể được thực hiện
Bước 5. Bây giờ, chúng ta hãy chèn các bản ghi
Truy vấn
INSERT INTO employee [ empId, empName, empLoginTime ] VALUES [1, 'XXX', '2021-01-01 00:00:01'], [2, 'YYY', '2021-01-01 00:00:01'], [3, 'ZZZ', '2021-01-01 00:00:01'], [4, 'XYZ', '2021-01-01 00:00:01'];
Bước 6. Hiển thị các bản ghi
Truy vấn
SELECT * FROM employee;
đầu ra
Ở đây, cột ”empLoginTime” cho biết giá trị trong mẫu múi giờ được đề cập
Bước 7. Có khả năng xem dữ liệu từ các múi giờ khác nhau. Trong những khoảng thời gian đó, chúng ta có thể đặt múi giờ theo ý muốn
Truy vấn
SET time_zone ='+03:00'; SELECT * FROM employee;
đầu ra
Trong MySQL, có một cơ sở để giữ giá trị dấu thời gian hiện tại mặc định cho một cột. tôi. e. empLoginTime sẽ tự động lấy giá trị dấu thời gian bất cứ khi nào nhân viên đăng nhập vào hệ thống. Nó tương đương với việc cập nhật cột thành giá trị dấu thời gian hiện tại
Truy vấn
ALTER TABLE employee MODIFY COLUMN empLoginTime TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;
Hãy để chúng tôi kiểm tra cấu trúc của bảng bây giờ
Truy vấn
________số 8Lợi thế của việc cập nhật current_timestamp
Với cả DEFAULT CURRENT_TIMESTAMP và ON UPDATE CURRENT_TIMESTAMP, cột “empLoginTime” có dấu thời gian hiện tại cho giá trị mặc định của nó và được tự động cập nhật thành dấu thời gian hiện tại
Bây giờ chúng ta hãy chèn các bản ghi vào bảng. Vì chúng tôi có current_timestamp mặc định và cũng cập nhật lên current_timestamp, nên chúng tôi không cần cung cấp các giá trị cho 'empLoginTime'. Dưới đây là truy vấn để làm điều đó
Truy vấn
**Since empLoginTime has the current timestamp value, we no need to add the value explicitly to that column** INSERT INTO employee [empId, empName] VALUES [5, 'ABC'],[6,'CDE'];
Hiển thị các bản ghi
Truy vấn
SELECT * FROM employee;
Luôn luôn tốt hơn nếu có các cột 'đăng nhập' và 'đăng xuất' cũng như các loại cột tương tự để có các giá trị current_timestamp mặc định. Nếu nó không được đặt, chúng tôi có thể cập nhật các giá trị cột một cách dễ dàng.
Trong bàn làm việc của MySQL, chúng ta phải làm như sau
Các bước cập nhật dữ liệu
- Điều hướng đến Chỉnh sửa -> Tùy chọn
- Sau đó nhấp vào tab “SQL Editor” và bỏ chọn hộp kiểm “Safe Updates”
- Sau đó bấm vào Truy vấn -> Kết nối lại với máy chủ
Bây giờ thực hiện truy vấn SQL của bạn
Truy vấn
USE GEEKSFORGEEKS;1
Hiển thị các bản ghi
Truy vấn
SELECT * FROM employee;
Thông thường, chúng ta nên có “thời gian được tạo” và “thời gian được sửa đổi” trong một bảng để có các giá trị được cập nhật. Điều đó sẽ giúp cho mục đích kiểm toán. Ràng buộc mặc định rất hữu ích để đặt giá trị dấu thời gian hiện tại. Trong quá trình tạo bảng, giá trị mặc định có thể được đặt hoặc nếu không, bằng cách sử dụng lệnh ALTER , chúng ta có thể đặt giới hạn mặc định. Một cách khác là sử dụng lệnh 'UPDATE' và được thấy trong ví dụ trên
Theo mặc định, trường DẤU THỜI GIAN trong bảng MySQL sẽ tự động cập nhật thành dấu thời gian hiện tại nếu bất kỳ trường nào khác trong hàng thay đổi. Điều này cực kỳ hữu ích cho các trường hợp bạn muốn theo dõi các thay đổi, chẳng hạn như đối với hệ thống ajax muốn tìm nạp bất kỳ thay đổi nào đã xảy ra kể từ lần cuối cùng "đăng ký". Điều này có thể dễ dàng chứng minh bằng cách chạy các lệnh sau trong cơ sở dữ liệu MySQL
USE GEEKSFORGEEKS;3
Bây giờ nếu chúng ta chọn mọi thứ từ bảng, bạn sẽ thấy một cái gì đó như bên dưới [với dấu thời gian khác]
USE GEEKSFORGEEKS;4
Bây giờ nếu chúng tôi cập nhật một hàng trong bảng, bạn sẽ thấy rằng dấu thời gian cũng được cập nhật
USE GEEKSFORGEEKS;5
Đây có thể là một tác động không mong muốn nếu bạn chỉ muốn lưu dấu thời gian cho một sự kiện đã xảy ra thay vì theo dõi các thay đổi liên tiếp. Nếu đây là trường hợp, bạn phải xác định rõ ràng dấu thời gian mỗi khi bạn thực hiện thay đổi đối với hàng. Ngoài ra, nếu bạn muốn dấu thời gian không bao giờ tự động cập nhật, bạn có thể chỉ định
USE GEEKSFORGEEKS;6 cho dấu thời gian khi tạo bảng, sau đó
USE GEEKSFORGEEKS;7 sẽ không bao giờ kích hoạt. Khi giá trị mặc định không được chỉ định [và do đó,
USE GEEKSFORGEEKS;7 được đặt thành
USE GEEKSFORGEEKS;9], việc đặt giá trị của dấu thời gian thành một giá trị theo cách thủ công sẽ không ngăn các bản cập nhật trong tương lai thay đổi giá trị thành dấu thời gian hiện tại
Cảnh báo - Mặc định rõ ràng
Khi cài đặt MySQL trên Debian 7, tệp
CREATE TABLE employee [ empId int NOT NULL, empName VARCHAR[20], empLoginTime TIMESTAMP ];0 chỉ định
CREATE TABLE employee [ empId int NOT NULL, empName VARCHAR[20], empLoginTime TIMESTAMP ];1 "phá vỡ" hành vi mặc định ở trên và sẽ dẫn đến dấu thời gian không mặc định thành dấu thời gian hiện tại khi chèn hoặc cập nhật. Tuy nhiên, Ubuntu 14. 04 mà tôi đang sử dụng cho hướng dẫn này thì không. Theo nguyên tắc thông thường, tốt nhất là bạn nên viết thật rõ ràng và đảm bảo chỉ định
CREATE TABLE employee [ empId int NOT NULL, empName VARCHAR[20], empLoginTime TIMESTAMP ];2 khi tạo cột dấu thời gian. Bằng cách đó, mã của bạn sẽ hoạt động trên các cơ sở dữ liệu mà không cần phải nhớ kiểm tra cấu hình máy chủ