Mysql 修改字段默認值


環境描述:

MySQL 5.7.13

問題描述:
建表的時候,users_info表的role_id字段沒有默認值,后期發現注冊的時候,需要提供給用戶一個默認角色,也就是給role_id字段一個默認值。

當前users_info表的role_id 在創建表的時候,沒有設置默認值,數據庫自動設置為空。

原先建表語句:role_id字段。

修改字段默認值:role_id默認值設置為:1

mysql> alter table users_info alter column role_id set default 1;

測試:

mysql> insert into users_info(username,passwd,phone_number,email) values('趙六',md5('123456'),'13700007777','777777777@qq.com');

修改字段默認值語法:

alter table 表名 alter column 字段名 drop default; (若本身存在默認值,則先刪除)

alter table 表名 alter column 字段名 set default 默認值;(若本身不存在則可以直接設定)

測試代碼:

--由於users_info表創建的時候,添加了外鍵約束,所以,小伙伴們測試的話,建議先建個角色表roles
CREATE TABLE  roles(  
    role_id smallint unsigned primary key auto_increment, #角色id   
    role_name varchar(20) not null unique #角色名稱
)ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- 創建用戶信息表 role_id字段沒設默認值
CREATE TABLE `users_info` (
  `user_id` smallint(5) unsigned NOT NULL AUTO_INCREMENT,
  `username` varchar(20) NOT NULL,
  `passwd` char(60) NOT NULL,
  `phone_number` varchar(11) DEFAULT NULL,
  `email` varchar(60) DEFAULT NULL,
  `role_id` smallint(5) unsigned,
  `create_time` datetime NOT NULL default now(),
  PRIMARY KEY (`user_id`),
  UNIQUE KEY `username` (`username`),
  KEY `fk_role_id` (`role_id`),
  CONSTRAINT `fk_role_id` FOREIGN KEY (`role_id`) REFERENCES `roles` (`role_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- 插入幾條測試數據
insert into roles(role_name) values('初始注冊角色');

insert into users(username,passwd,phone_number,email) values('張三',md5('123456'),'13700008888','7654321@qq.com')

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM