mysql - 插入现有表中新添加的列

标签 mysql sql database

我在数据库中已经有一个带有字段的表“用户”

create Table user (
id INT(6) NOT NULL AUTO_INCREMENT PRIMARY KEY,
username varchar(20) NOT NULL,
password varchar(20) NOT NULL,
profilename varchar(20) NOT NULL,
email varchar(40) NOT NULL,
socialemail varchar(40) NOT NULL)engine=InnoDB;

规定的列也包含值

我修改了表格并添加了更多列

ALTER TABLE user
ADD COLUMN enabled varchar(1),
ADD COLUMN accountnonexpired varchar(1),
ADD COLUMN credentialsnonexpired varchar(1),
ADD COLUMN accountnonlocked varchar(1);

现在,当我在 MYSQL 中使用以下命令将值插入新列时。

insert into user
(id,enabled,accountnonexpired,credentialsnonexpired,accountnonlocked) values ('1','Y','Y','Y','Y'),('2','Y','Y','Y','Y');

我遇到了一个错误

Error Code: 1364. Field 'username' doesn't have a default value

谁能告诉我为什么? 在新列中插入值的正确方法应该是什么?

enter image description here

最佳答案

INSERT 向您的表中添加新行,这些行必须具有非空用户名才能使 INSERT 成功 这不是 100% 清楚,但我认为您是说要为所有现有行设置这些新列的值。为此,您需要 UPDATE 而不是 INSERT:

UPDATE user SET id='1', enabled = 'Y', accountnonexpired = 'Y' WHERE 1

为简洁起见,我省略了您的一些专栏,但您明白了。您可能还想更改表格,使这些值成为将来插入的新行的 DEFAULT

关于mysql - 插入现有表中新添加的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22853684/

相关文章:

具有不同执行计划的 MySQL Master 和 Slave

sql - 选择问题

php - 加入 1 个 MySQL 行和几个结果

mysql - 插入这些数据最快的方法是什么

mysql - 如何在表中加载动态 XML 数据

node.js - 获取字段不是特定字符串的文档

SQLite中的数据库设计和python

android - Cursor getInt 返回负值

MySQL 查询按 10 天周期生成报告

database - 在 Neo4J 数据库上使用 Jena 推理器