易截截图软件、单文件、免安装、纯绿色、仅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 添加外键

MySQL 添加外键
DROP TABLE IF EXISTS `nation`;
CREATE TABLE `nation`(
    `pii_Nation` smallint(2) unsigned NOT NULL default '0',
    `pii_NatinoName` varchar(40) NOT NULL default '',
    PRIMARY KEY  (`pii_Nation`)
)ENGINE=InnoDB DEFAULT CHARSE ......

Ubuntu Server9 Mysql 安装如下

要安装 MySQL,可以在终端提示符后运行下列命令:
sudo apt-get install mysql-server
sudo apt-get install mysql-client
sudo apt-get install php5-mysql
// 安装php5-mysql 是将php和mysql连接起来
一旦安装完成,MySQL 服务器应该自动启动。您可以在终端提示符后运行以下命令来检查 MySQL 服务器是否正在运行: ......

让mysql 能够远程连接

mysql error number 2003   
Can't connect to MySQL server xxx.xxx.xxx.xxx (10061)
在ubuntu 9.04中默认安装了mysql,默认只能本地访问,google了一下:
采用
登录到MySQL服务器端,在mysql库下执行
grant all on *.* to 'remote'@'172.16.21.39' identified by 'password';
即可
如果要设置为 ......

快速导出导入mysql命令


mysqldump -u root -p -e --max_allowed_packet=1048576 --net_buffer_length=16384 msiptv>c:\thedump.sql
问题:在使用mysql过程中备份数据,一般都是被分成sql语句文本,但mysqldump命令默认是非常机械地处理语句的组织。导致重新导入的时候效率太低。比如10万条数据就要执行10万次的sql语句,耗时太多。
原理: ......

简单测试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号