易截截图软件、单文件、免安装、纯绿色、仅160KB

Mysql存储过程(五)——SEQUENCE的实现


oracle
中,
sequence
提供多表多字段可共用一个不重复值。
Mysql
中存在自增列,基本可以满足
PK
的要求。但自增列存在限制:
a.
只能用于表中的一个字段,一张不能同时存在两个以上的自增列
;
b.
自增列必须被定义为
key

PK

FK

;
c.
自增列不能被多个表共用
;
d.

insert
语句不包括自增字段或将其值设置为
NULL
时,该值会自动填上。
                  
在不要求字段顺序递增的情况下,可以在
Mysql
中实现序列:
        
Sql
code 5-1:
                  
DROP TABLE IF EXISTS sequence;

-- 建sequence表,指定seq列为无符号大整型,可支持无符号值:0(default)到18446744073709551615(0到2^64–1)。
CREATE TABLE sequence (
name VARCHAR(50) NOT NULL,
current_value BIGINT UNSIGNED NOT NULL DEFAULT 0,
increment INT NOT NULL DEFAULT 1,
PRIMARY KEY (name) -- 不允许重复seq的存在。
) ENGINE=InnoDB;


DELIMITER /

DROP FUNCTION IF EXISTS currval /

CREATE FUNCTION currval(seq_name VARCHAR(50))
RETURNS BIGINT
BEGIN
DECLARE value BIGINT;
SELECT current_value INTO value
from sequence
WHERE upper(name) = upper(seq_name); -- 大小写不区分.
RETURN value;
END;
/

DELIMITER ;


DELIMITER /

DROP FUNCTION IF EXISTS nextval /

CREATE FUNCTION nextval (seq_name VARCHAR(50))
RETURNS BIGINT
BEGIN
DECLARE value BIGINT;
UPDATE sequence
SET current_value = current_value + increment
WHERE upper(name) = upper(seq_name);
RETURN currval(seq_name);
END;
/

DELIMITER ;

DELIMITER /

DROP FUNCTION IF EXISTS setval /

CREATE FUNCTION setval (seq_name VARCHAR(50), value BIGINT)
RETURNS BIGINT
BEGIN
UPDATE seque


相关文档:

mysql root 密码忘记????

今天给新来的员工连接数据库,修改了一下mysql root用户的密码,我下载的是打包的redMine,默认密码是空,修改密码之后重启redmine,phpAdmin 链接不上mysql数据库了,我也修改了phpadmin文件夹下的config.inc.php的密码,还是不行,提示#1130 - Host 'localhost' is not allowed to connect to this MySQL server错误,明 ......

mysql中时间查询函数(包括时间戳)

这些函数都是MySQL自带的,可以直接使用在PHP写的MySQL查询语句中哦
1-CURDATE()或CURRENT_DATE()和CURTIME()或CURRENT_TIME()
这两个函数是比较常用到的,顾名思义,第一个返回当前日期,第二个返回当前时间
可以在MySQL客户端或者PHP语句里写"SELECT CURDATE(),CURTIME()"查看相关信息.
还有一个很重要的函 ......

Mysql存储过程(三)——处理分页


分页功能在任何应用中都比较常见,而
Mysql
的存储过程分页必须通过动态
sql
来执行。分页对应的
offset

row_count
必须先用
concat
函数变成字符串组装到
sql
中(如语句
1
),而不能直接使用(如语句
2

Mysql
不支持)。
Mysql
分页功能的实现如下代码所示:
    &nbs ......

MySQL my.ini 配置文件详解


  (1)、back_log:
  要求 MySQL 能有的连接数量。当主要MySQL线程在一个很短时间内得到非常多的连接请求,这就起作用,然后主线程花些时间(尽管很短)检查连接并且启动一个新线程。
  back_log值指出在MySQL暂时停止回答新请求之前的短时间内多少个请求可以被存在堆栈中。只有如果期望在一个短时间内有很多连接, ......

简单测试MySQL 5.1 表分区功能

想测试下表分区功能跟自主的分布式的性能差异,进行了简单的测试,前后花费了半个小时,可能测试数据不太准确。
【测试环境】
操作系统:Windows XP SP2
MySQL: 5.1.19-beta-community-nt-debug
【测试过程】
查看MySQL版本:
mysql> select version();
+--------------------------------+
| version() ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号