2014-04-03 149 views
1

我使用带有phpmyadmin 3.2.4的XAMMP - mySQL 5.1.41。无法在mysql上创建触发器

我创建MySQL中的表,我想创建一个tbl_users触发器,但MySQL的说明这个错误:

#1064 - 你有一个错误的SQL语法;检查对应于你的MySQL服务器版本使用附近的正确语法手册 'FROM TBL_USERS ON TBL_USERS FOR INSERT AS IF(SELECT COUNT(*),其中username IN' 在1号线

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 

回答

2
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 
+0

我用这个特里格呃在SQL Server 2008中,它运行成功。 –