创建用户表,用户额外的表以及触发器:
CREATE TABLE user(
uid int primary key AUTO_INCREMENT,
birthday varchar(50),
email varchar(50) not null unique default '0',
school varchar(30),
register_day varchar(50) not null default '0',
gender varchar(1) default '0' check(gender in('1','0')),
password varchar(20) not null default '0'
);
create table user_a(
uid int not null,
user_name varchar(50) ,
signature varchar(255),
head_url varchar(255),
job varchar(255),
hobby varchar(255),
introduction varchar(255)
)
DELIMITER |
CREATE TRIGGER conn AFTER INSERT ON user
FOR EACH ROW BEGIN
insert into user_a set uid = NEW.uid;
update user_a set user_name= CONCAT(NEW.uid) where uid=NEW.uid;
END
|
有以下的几点注意:
触发器不能修改触发器所依赖的表。比如用户注册后如果没有修改昵称,那么称就是uid号.一开始是将user_name放在user表中间的,也就是要把uid赋给同一行的user_name.这一部分使用的是这样的触发器:
DELIMITER |
CREATE TRIGGER conn AFTER INSERT ON user
FOR EACH ROW BEGIN
update user set user_name= CONCAT(NEW.uid) where uid=NEW.uid;
END
|
这样做的话user表连插入都不能用。说明不能这样做。
此外:
mysql不支持 for each statement
也不支持标准sql语句。(比如 insert into user_a (uid) values (new.uid) 这种标准的sql语句)不能有返回值(比如要使用select)。