我将 XAMMP 与 phpmyadmin 3.2.4 - mySQL 5.1.41 结合使用。
我在 mySQL 中创建了一个表,我想在 tbl_users 上创建一个触发器,但是 mySQL 显示这个错误:
#1064 - 你的 SQL 语法有错误;检查与您的 MySQL 服务器版本对应的手册,了解在第 1 行的“ON TBL_USERS FOR INSERT AS IF(SELECT COUNT(*) FROM TBL_USERS WHERE USERNAME IN”附近使用的正确语法
CREATE TABLE TBL_USERS
(
ID INT NOT NULL AUTO_INCREMENT,
USERNAME VARCHAR(50) NOT NULL,
PASSWORD VARCHAR(50) NOT NULL,
EMAIL VARCHAR(100) NOT NULL,
STATUS INT DEFAULT 1,
TYPE_USER INT DEFAULT 1,
DISPLAY_NAME VARCHAR(50) NULL,
CONSTRAINT PK_USERS PRIMARY KEY (ID),
CONSTRAINT UN_USERNAME UNIQUE(USERNAME)
)
触发器:
CREATE TRIGGER CHECK_USERNAME ON TBL_USERS FOR INSERT
AS
IF(SELECT COUNT(*) FROM TBL_USERS WHERE USERNAME IN (SELECT USERNAME FROM inserted))>1
BEGIN
PRINT 'THIS USERNAME IS EXISTS'
ROLLBACK TRANSACTION
END
最佳答案
Trigger activation time can be BEFORE or AFTER. You must specify the activation time when you define a trigger. You use BEFORE keyword if you want to process action prior to the change is made on the table and AFTER if you need to process action after change are made.
像这样尝试:
create trigger userIns BEFORE INSERT ON table_name
FOR EACH ROW
BEGIN
...
END
关于mysql - 无法在mysql上创建触发器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22845036/