MYSQL存储结构和事务

MYSQL存储结构初探

这两天需要完成一个数据转移。因为数据库表有一些修改,我需要把增加的字段的值给填充进去,所以这两天看了看MYSQL的存储结构(实在是因为用java操作感觉思路简单但是很麻烦,不如就学一下sql语句)。
这其中有有些坑,我还在爬,会接着更新。
首先上成品

CREATE PROCEDURE change_stu()#新建存储过程
BEGIN
DECLARE t_error INTEGER DEFAULT 0;
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET t_error=1;
START TRANSACTION;
ALTER TABLE student ADD(
addr VARCHAR(50) COMMENT '省市地区',
relation_id BIGINT(13) COMMENT '联系人称谓ID', 
contact_name VARCHAR(20) COMMENT '联系人姓名',
contact_phone VARCHAR(20) COMMENT '联系人手机',
`mode` INT(1) COMMENT '报名方式',#如果是关键字,用1旁边的`引起来
exit_time DATETIME COMMENT '退学时间',
`status` INT(1) COMMENT '1-在读,2-休学,0-退学'
);
/* 在改not null要先把null的列改为默认值*/
UPDATE student SET addr='' WHERE addr IS NULL;
UPDATE student SET relation_id=0 WHERE relation_id IS NULL;
UPDATE student SET contact_name='' WHERE contact_name IS NULL;
UPDATE student SET contact_phone='' WHERE contact_phone IS NULL;
UPDATE student SET `mode`='' WHERE mode IS NULL;
UPDATE student SET `status`='' WHERE status IS NULL;
#UPDATE student SET exit_time='0000-00-00 00:00:00' WHERE exit_time IS NULL;
ALTER TABLE student MODIFY relation_id BIGINT(13) NOT NULL;
ALTER TABLE student MODIFY contact_name VARCHAR(20) NOT NULL;
ALTER TABLE student MODIFY contact_phone VARCHAR(20) NOT NULL;
ALTER TABLE student MODIFY `mode` INT(1) NOT NULL DEFAULT 0;
ALTER TABLE student MODIFY `status` INT(1) NOT NULL DEFAULT 1;
IF t_error = 1 THEN
ROLLBACK;
ELSE
COMMIT;
END IF;
END $$

这个存储过程呢,实现的就是对一张表结构的改变,添加字段,设置NOT NULL,这里有一个点
因为字段新添加,默认值可以设,但是没有设置的时候,默认NULL,所以需要那一串UPDATE语句
如果是mysql中的关键词,用`给括起来

DECLARE t_error INTEGER DEFAULT 0;

定义一个错误变量

DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET t_error=1;

如果语句出错,那么这个存储过程的操作就回滚

START TRANSACTION;

开启事务

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值