예전에 HeidiSQL에서 사용했던 쿼리를 MySQL Workbench에 맞게 수정해 테이블 생성해본다.
의도:
우선, HeidiSQL에서 쓰던 database 개념은 MySQL Workbench에서는 schema로 대체된다.
테이블/트리거 생성 전 어느 스키마에서 생성할지 미리 지정해야 한다.
Navigator > Schemas 선택 후, 해당 스키마 이름을 클릭...

혹은 아래 쿼리를 실행하면 된다.
USE test_schema;
1, table:
CREATE TABLE users (
uSeq INT NOT NULL AUTO_INCREMENT,
uCode VARCHAR(6) NOT NULL,
uName VARCHAR(20) NOT NULL,
uPw VARBINARY(255) NOT NULL,
uDob DATE NOT NULL,
uTel VARCHAR(11) NOT NULL,
uMail VARCHAR(45),
uAdd VARCHAR(45),
uDtlAdd VARCHAR(45),
agreeYn TINYINT NOT NULL,
PRIMARY KEY (uSeq),
UNIQUE KEY uCode (uCode)
);
2, trigger:
DELIMITER //
CREATE TRIGGER trg_before_insert_users
BEFORE INSERT ON test_schema.users
FOR EACH ROW
BEGIN
DECLARE last_id INT;
SELECT AUTO_INCREMENT
INTO last_id
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'users';
SET NEW.uCode = CONCAT('U', LPAD(last_id, 5, '0'));
END//
DELIMITER ;
*스키마 지정하지 않고 트리거 생성하면 아래 오류가 보인다.
Error Code: 1046. No database selected Select the default DB to be used by double-clicking its name in the SCHEMAS list in the sidebar.
마지막으로 레코드 생성 시 UK가 원하는 대로 생성되고 비밀번호가 잘 암호화되는지 확인을 위한 아래 쿼리 실행한다.
INSERT INTO users (uName, uPw, uDob, uTel, uMail, uAdd, uDtlAdd, agreeYn)
VALUES ('홍길동', AES_ENCRYPT('password123', 'encryption_key'), '1990-01-01', '01012345678', 'hong@example.com', '서울시 강남구', '역삼동', 1);
SELECT * FROM users;

이렇게도 컬럼 수정/추가/삭제 할 수 있어서 보기 참 직관적이다.
