2014-04-03 195 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中,它運行成功。 –