我创建了一个mysql数据库,但是在我很难在其中一个表中插入虚拟数据之后。这是我用来创建包含三个表的数据库的查询:categories,transactions,budgets;
use mct;
create table if not exists categories(
id int auto_increment not null,
category varchar(255),
primary key (id)
);
create table if not exists transactions(
id int auto_increment not null,
dt date,
vendor varchar(255),
amount decimal(7,2),
cat_id int default 1,
primary key(id),
foreign key(cat_id) references categories(id)
);
create table if not exists budgets_2018(
id int not null,
January decimal(7,2) default 0.00,
February decimal(7,2) default 0.00,
March decimal(7,2) default 0.00,
April decimal(7,2) default 0.00,
May decimal(7,2) default 0.00,
June decimal(7,2) default 0.00,
July decimal(7,2) default 0.00,
August decimal(7,2) default 0.00,
September decimal(7,2) default 0.00,
October decimal(7,2) default 0.00,
November decimal(7,2) default 0.00,
December decimal(7,2) default 0.00,
primary key(id),
foreign key(id) references categories(id)
);
insert into categories (category) values ('Uncategorized');
insert into budgets_2018(id) values ((select id from categories where category = 'Uncategorized'));
理论上,类别与交易和预算之间存在一对多关系。最后几行代码也会生成一个包含一条记录的category表(1,“uncategorized”),以及一个包含一条记录的budgets\u 2018表(每月多生成1,0.00,0.00…x11)。
这是我用来向transactions表中添加一些伪数据的查询。这些表有五列,第一列自动递增,第五列默认为1。第五列(catu id)也是主要类别的外键,因此我在下面的insert查询中没有使用它们:
insert into transactions (dt, vendor, amount) values (
(curdate(), 'DummyVendor1', 3.45),
(curdate(), 'DummyVendor2', 11.47),
(curdate(), 'DummyVendor3', 73.22),
(curdate(), 'DummyVendor4', 199.27),
(curdate(), 'DummyVendor5', 34.56),
(curdate(), 'DummyVendor6', 18.99),
(curdate(), 'DummyVendor7', 1.45),
(curdate(), 'DummyVendor8', 2.41)
);
但是在插入查询之后,我得到了
“错误1136:列计数与第1行的值计数不匹配。”。
如果我错了,请正确告诉我,但是事务的第一列(id自动递增)和第五列(cat_id默认为1)应该在不需要显式插入的情况下填充,对吗?所以我不确定是什么导致了这个错误。
谢谢您。
1条答案
按热度按时间yzuktlbb1#
问题是你的第一个和最后一个括号。取下后,应插入: