



免费预览已结束,剩余1页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
MySQL自增长与Oracle序列的区别: 自增长只能用于表中的其中一个字段 自增长只能被分配给固定表的固定的某一字段,不能被多个表共用. 自增长会把一个未指定或NULL值的字段自动填上. 在mysql中添加序列,请看下面的实例: 在MYSQL里有这样一张表: Java代码 1. CREATE TABLE Movie( 2. id INT NOT NULL AUTO_INCREMENT, 3. name VARCHAR(60) NOT NULL, 4. released YEAR NOT NULL, 5. PRIMARY KEY (id) 6. ) ENGINE=InnoDB; CREATE TABLE Movie(id INT NOT NULL AUTO_INCREMENT,name VARCHAR(60) NOT NULL,released YEAR NOT NULL,PRIMARY KEY (id) ENGINE=InnoDB;Java代码 1. INSERT INTO Movie (name,released) VALUES (Gladiator,2000); 2. INSERT INTO Movie (id,name,released) VALUES (NULL,The Bourne Identity,1998); INSERT INTO Movie (name,released) VALUES (Gladiator,2000);INSERT INTO Movie (id,name,released) VALUES (NULL,The Bourne Identity,1998);在ORACLE是这样的: Java代码 1. CREATE TABLE Movie( 2. id INT NOT NULL, 3. name VARCHAR2(60) NOT NULL, 4. released INT NOT NULL, 5. PRIMARY KEY (id) 6. ); 7. CREATE SEQUENCE MovieSeq; CREATE TABLE Movie(id INT NOT NULL,name VARCHAR2(60) NOT NULL,released INT NOT NULL,PRIMARY KEY (id);CREATE SEQUENCE MovieSeq;Java代码 1. INSERT INTO Movie (id,name,released) VALUES (MovieSeq.NEXTVAL,Gladiator,2000); INSERT INTO Movie (id,name,released) VALUES (MovieSeq.NEXTVAL,Gladiator,2000);在oracle下为表添加一个触发器,就可以实现mysql自增长功能: Java代码 1. CREATE OR REPLACE TRIGGER BRI_MOVIE_TRG 2. BEFORE INSERT ON Movie 3. FOR EACH ROW 4. BEGIN 5. SELECT MovieSeq.NEXTVAL INTO :new.id FROM DUAL; 6. END BRI_MOVIE_TRG; 7. . 8. RUN; CREATE OR REPLACE TRIGGER BRI_MOVIE_TRGBEFORE INSERT ON MovieFOR EACH ROWBEGIN SELECT MovieSeq.NEXTVAL INTO :new.id FROM DUAL;END BRI_MOVIE_TRG;.RUN;这样,插件记录就可以成为MYSQL风格: Java代码 1. INSERT INTO Movie (name,released) VALUES (The Lion King,1994); INSERT INTO Movie (name,released) VALUES (The Lion King,1994);下面我们来看看如何在mysql数据里使用Oracle序列语法.NEXTVAL 和 .CURVAL. 我们假设在mysql中序列的语法是: NEXTVAL(sequence); CURRVAL(sequence); SETVAL(sequence,value);下面就是CURRRVAL的实现方案: Java代码 1. DROP TABLE IF EXISTS sequence; 2. CREATE TABLE sequence ( 3. name VARCHAR(50) NOT NULL, 4. current_value INT NOT NULL, 5. increment INT NOT NULL DEFAULT 1, 6. PRIMARY KEY (name) 7. ) ENGINE=InnoDB; 8. INSERT INTO sequence VALUES (MovieSeq,3,5); 9. DROP FUNCTION IF EXISTS currval; 10. DELIMITER $ 11. CREATE FUNCTION currval (seq_name VARCHAR(50) 12. RETURNS INTEGER 13. CONTAINS SQL 14. BEGIN 15. DECLARE value INTEGER; 16. SET value = 0; 17. SELECT current_value INTO value 18. FROM sequence 19. WHERE name = seq_name; 20. RETURN value; 21. END$ 22. DELIMITER ; DROP TABLE IF EXISTS sequence;CREATE TABLE sequence (name VARCHAR(50) NOT NULL,current_value INT NOT NULL,increment INT NOT NULL DEFAULT 1,PRIMARY KEY (name) ENGINE=InnoDB;INSERT INTO sequence VALUES (MovieSeq,3,5);DROP FUNCTION IF EXISTS currval;DELIMITER $CREATE FUNCTION currval (seq_name VARCHAR(50)RETURNS INTEGERCONTAINS SQLBEGIN DECLARE value INTEGER; SET value = 0; SELECT current_value INTO value FROM sequence WHERE name = seq_name; RETURN value;END$DELIMITER ;测试一下结果: Java代码 1. mysql SELECT currval(MovieSeq); 2. +-+ 3. | currval(MovieSeq) | 4. +-+ 5. |3 | 6. +-+ 7. 1 row in set (0.00 sec) 8. mysql SELECT currval(x); 9. +-+ 10. | currval(x) | 11. +-+ 12. |0 | 13. +-+ 14. 1 row in set, 1 warning (0.00 sec) 15. mysql show warnings; 16. +-+-+-+ 17. | Level | Code | Message | 18. +-+-+-+ 19. | Warning | 1329 | No data to FETCH | 20. +-+-+-+ 21. 1 row in set (0.00 sec) mysql SELECT currval(MovieSeq);+-+| currval(MovieSeq) |+-+| 3 |+-+1 row in set (0.00 sec)mysql SELECT currval(x);+-+| currval(x) |+-+| 0 |+-+1 row in set, 1 warning (0.00 sec)mysql show warnings;+-+-+-+| Level | Code | Message |+-+-+-+| Warning | 1329 | No data to FETCH |+-+-+-+1 row in set (0.00 sec)nextval Java代码 1. DROP FUNCTION IF EXISTS nextval; 2. DELIMITER $ 3. CREATE FUNCTION nextval (seq_name VARCHAR(50) 4. RETURNS INTEGER 5. CONTAINS SQL 6. BEGIN 7. UPDATE sequence 8. SET current_value = current_value + increment 9. WHERE name = seq_name; 10. RETURN currval(seq_name); 11. END$ 12. DELIMITER ; DROP FUNCTION IF EXISTS nextval;DELIMITER $CREATE FUNCTION nextval (seq_name VARCHAR(50)RETURNS INTEGERCONTAINS SQLBEGIN UPDATE sequence SET current_value = current_value + increment WHERE name = seq_name; RETURN currval(seq_name);END$DELIMITER ;Java代码 1. mysql select nextval(MovieSeq); 2. +-+ 3. | nextval(MovieSeq) | 4. +-+ 5. |15 | 6. +-+ 7. 1 row in set (0.09 sec) 8. 9. mysql select nextval(MovieSeq); 10. +-+ 11. | nextval(MovieSeq) | 12. +-+ 13. |20 | 14. +-+ 15. 1 row in set (0.01 sec) 16. 17. mysql select nextval(MovieSeq); 18. +-+ 19. | nextval(MovieSeq) | 20. +-+ 21. |25 | 22. +-+ 23. 1 row in set (0.00 sec) mysql select nextval(MovieSeq);+-+| nextval(MovieSeq) |+-+| 15 |+-+1 row in set (0.09 sec)mysql select nextval(MovieSeq);+-+| nextval(MovieSeq) |+-+| 20 |+-+1 row in set (0.01 sec)mysql select nextval(MovieSeq);+-+| nextval(MovieSeq) |+-+| 25 |+-+1 row in set (0.00 sec)setval Java代码 1. DROP FUNCTION IF EXISTS setval; 2. DELIMITER $ 3. CREATE FUNCTION setval (seq_name VARCHAR(50), value INTEGER) 4. RETURNS INTEGER 5. CONTAINS SQL 6. BEGIN 7. UPDATE sequence 8. SET current_value = value 9. WHERE name = seq_name; 10. RETURN currval(seq_name); 11. END$ 12. DELIMITER ; DROP FUNCTION IF EXISTS setval;DELIMITER $CREATE FUNCTION setval (seq_name VARCHAR(50), value INTEGER)RETURNS INTEGERCONTAINS SQLBEGIN UPDATE sequence SET current_value = value WHERE name = seq_name; RETURN currval(seq_name);END$DELIMITER ;Java代码 1. mysql select setval(MovieSeq,150); 2. +-+ 3. | setval(MovieSeq,150) | 4. +-+ 5. |150 | 6.
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 基础会计实务操作案例集
- 企业预算绩效管理落地实施方案
- 智慧停车场智能化管理方案
- 小学英语教研会实验记录表模板
- 书画交易合同法律注意事项
- 金融操盘手实战训练教材与案例分析
- 小学低段古诗词记忆训练题库
- 2025-2030数字原生代幼儿多任务处理能力的神经代偿特征发现
- 早教系统评估-洞察与解读
- 2025-2030教育行业云基础设施服务采纳现状与发展策略研究报告
- 2025年江西省抚州市公安招聘警务辅助人员公安基础知识+综合理论知识复习题及答案
- 2025年山东省公务员考试《行测》考试笔试试题试题解析
- 光伏电站线路维护与检修方案
- 2025年第一季度西部战区空军医院招聘医师、技师、护士、药师、心理咨询师、协调员等岗位人员29人(四川)考前自测高频考点模拟试题有完整答案详解
- 建筑施工安全隐患排查整改报告范本
- 《月相》课件教学课件
- 2025年及未来5年中国软件外包服务行业市场深度分析及发展前景预测报告
- 基孔肯雅病毒(CHIKV)实验活动风险评估报告
- 学习勤奋的重要性:议论文(5篇)
- 中债业务知识培训课件
- 武汉从业资格证摸拟考试及答案解析
评论
0/150
提交评论