Để tạo được một column có kiểu là NUMBER mà giá trị của column đó có thể tự động tăng khi thực hiện câu lệnh INSERT
trong hệ quản trị cơ sở dữ liệu Oracle ta sẽ phải sử dụng đến SEQUENCE kết hợp với TRIGGER.
Muốn thực hiện được điều này, đầu tiên phải tạo một SEQUENCE:
CREATESEQUENCEname_of_sequence
START WITH 1
INCREMENT BY 1
MAX VALUE 999999
CACHE 100;
Đến đây, mỗi khi thực hiện câu lệnh INSERT, chỉ cần thực hiện như sau là đã có thể lấy được giá trị tăng kế tiếp để insert vào database:
INSERT INTO table_name(column_increment, other_column)
VALUES (name_of_sequence.NEXTVAL, other_column_value);
Ngoài ra, để thực hiện insert giá trị tự động tăng này vào column mà không cần gọi trực tiếp đến column đó trong câu lệnh,
ta sẽ phải tạo ra một TRIGGER để thực hiện được điều này.
CREATE OR REPLACETRIGGERtrigger_name
BEFORE INSERT ON table_name
FOR EACH ROW
BEGINSELECTname_of_sequence.NEXTVAL
INTO :new.primary_key_columnFROM dual;
END;
Từ phiên bản Oracle 11.1 về sau, ta có thể đơn giản khối lệnh tạo TRIGGER bên trên như sau:
CREATE OR REPLACETRIGGERtrigger_name
BEFORE INSERT ON table_name
FOR EACH ROW
BEGIN
:new.primary_key_column :=name_of_sequence.NEXTVAL;
END;
Tải file iso từ trang chủ của Fedora và sử dụng phần mềm Rufus tạo một usb boot cài đặt Fedora, sau đó tiến hành cài đặt bình thường.
II. Cài đặt và cấu hình Fedora Linux
1. Cài đặt wireless driver
Máy tính Sony VAIO SVF14217SGB sử dụng broadcom chipset BCM43142, driver của chipset này không còn được hỗ trợ cho Linux từ trang chủ Broadcom. Vì vậy, để có thể sử dụng được wifi ta sẽ phải cài đặt gói broadcom-wl từ RPM Fusion.
Để máy tính có thể sử dụng được wifi, ta cần phải kết nối internet thông qua dây nối và thực hiện các bước sau:
1.3. Sau khi update thành công, tiến hành build kernel mới nhất:
$ sudo dnf install kernel-devel -y
Sau khi build thành công, khởi động lại hệ thống, và chọn kernel mới nhất từ menu boot.
1.4. Cài đặt gói broadcom-wl
$ sudo dnf install broadcom-wl
Khởi động lại một lần nữa sẽ thấy menu setting cho wifi. Quá trình cài đặt hoàn tất.
2. Cài đặt, chỉnh sửa font mặc định và font chuyển đổi trên Fedora Linux.
Cài đặt các font cần thiết vào thư mục /usr/share/fonts (nếu muốn sử dụng cho tất cả user) hoặc ~/.local/share/fonts (nếu chỉ sử dụng cho user hiện tại).
Sau khi đã có các font cần sử dụng, tiến hành tạo cấu hình font cho Fedora Linux như sau:
2.1. Tạo file cấu hình font
Tiến hành tạo file fonts.conf tại thư mục /etc/fonts (nếu muốn tùy biến cho tất cả user) hoặc tại thư mục ~/.config/fontconfig/ (nếu chỉ muốn tùy biến cho user hiện tại).
2.2. Đặt nội dung sau vào file cấu hình và login lại vào hệ thống.
Tạo Trigger Function trên column có tên last_updated:
CREATE OR REPLACE FUNCTION public.update_timestam()
RETURNS trigger AS
$BODY$
BEGIN
NEW.last_updated = CURRENT_TIMESTAMP;
RETURN NEW;
END;
$BODY$
LANGUAGE plpgsql;
2. Tạo Trigger
Tạo Trigger cho bảng tbl_books.
CREATE TRIGGER trigger_upd_timestamp_last_updated_tbl_books
BEFORE UPDATE
ON public.tbl_books
FOR EACH ROW
EXECUTE PROCEDURE public.update_timestamp();
# Import sql dump file trong postgresql database:
$ psql -h hostname -d databasename -U username -f file.sql
# Kiểm tra <code>postgres client</code> version:
$ psql -V
# Để có thể thao tác trên postgres server ta cần kết nối tới postgres server, # để làm được điều này cần phải login vào hệ thống với quyền của postgres user.
$ sudo su - postgres
# Sau khi đã kết nối với postgres server, ta có thể thực hiện kết nối với database mặc định postgres như sau:
$ psql
# Kết nối với một database bằng một user cụ thể:
$ psql -d database_name -U user_name
Mặc định trong Ubuntu và Fedoraicon menu bị tắt đi. Dưới đây là cách bật icon menu trong hệ điều hành Linux:
Để bật chế độ menu có icon, cần thực hiện lệnh sau:
#!/bin/bash
~$ gsettings set org.gnome.desktop.interface menus-have-icons true
hoặc:
~$ gsettings set org.gnome.settings-daemon.plugins.xsettings overrides "{'Gtk/ButtonImages': <1>, 'Gtk/MenuImages': <1>}"
Cách tạo và kiểm tra tính hợp lệ của mật khẩu xác nhận khi đăng kí tài khoản sử dụng hibernate-validator
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Ví dụ tạo cột book_id tự động tăng trong bảng tbl_books
Tạo sequences tự động tăng giá trị cho cột book_id:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Tạo bảng tbl_books sử dụng sequences đã tạo trước đó:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Thẻ <site>: Xác định tên của một tác phẩm (ví dụ: một quyển sách, một bài hát, một bức tranh, một chương trình truyền hình...)
<img src="https://cdn-images-1.medium.com/max/600/1*Yja7DqjrBPJuHaw1QZ6iwg.jpeg" width="220" height="277" alt="The Scream">
<p><cite>The Scream by Edward Munch. Painted in 1893.</p>
Kết quả:
The Scream by Edward Munch. Painted in 1893.
Thẻ <mark>
Thẻ <mark>: Sử dụng khi muốn làm nổi bật một đoạn văn bản
<p>Do not forget to buy <mark>milk</mark> today.</p>
@Scope: mặc định trong Spring, hầu hết scope phổ biến cho các autodetected components là singleton (singleton: Với mỗi bean, Spring IoC Container chỉ tạo duy nhất một đối tượng), để thay đổi phạm vi ta sử dụng @Scope annotation).
@RequestMapping: dùng để ánh xạ tới các URL lên toàn bộ một class hay một phương thức xử lý riêng. Thông thường dùng để ánh xạ một request path (hoặc path pattern)
tới một controller.
@InitBinder: dùng để đánh dấu một phương thức có tùy biến các ràng buộc dữ liệu. @SessionAttribute: Chỉ định một modelAttribute sẽ được lưu trong session.
Spring Security Annotation
@PreAuthorize: được dùng để cho phép hoặc từ chối sử dụng một phương thức. Trong ví dụ dưới đây, chỉ những đối tượng user có quyền Admin mới có thể xóa được một đối tượng contact: