编写sql脚本需要注意的问题
1.一般情况下,sql脚本最开始应设置utf-8字符集,以此避免中文乱码的问题;
set names utf8;
2.关于函数的定义,可仿如下示例,以此避免在命令行下连接数据库时,source我们的sql脚本引起不知名的Error;
DROP FUNCTION IF EXISTS `xyz_sequence.nextval`;
DELIMITER //
CREATE FUNCTION `xyz_sequence.nextval`()
RETURNS BIGINT
NOT DETERMINISTIC
READS SQL DATA
BEGIN
DELETE from t_xyz_sequence;
INSERT t_xyz_sequence values(NULL);
return LAST_INSERT_ID();
END;
//
DELIMITER ;
delimiter其实就是告诉mysql解释器,该段命令是否已经结束了,mysql是否可以执行了。默认情况下,delimiter是分号;。在命令行客户端中,如果有一行命令以分号结束,那么回车后,mysql将会执行该命令。所以一般情况下,定义函数或者存储过程时,为了保证事务一致性,需要暂时修改默认的分隔符为//或$$,在定义结束之后,需要立刻设置回默认分隔符为分号;。