编写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将会执行该命令。所以一般情况下,定义函数或者存储过程时,为了保证事务一致性,需要暂时修改默认的分隔符为//或$$,在定义结束之后,需要立刻设置回默认分隔符为分号;。

 

 

你可能感兴趣的:(数据库)