2017-04-02 9 views
0

私は、MySQLで次の手順を実行しています:MySQLの列数は、値の数と一致しません(しかし、それはありません!)

create procedure addSavingAccount(id int(10), account_number varchar(10)) 
begin 
insert into saving values(id,'savings', account_number, 0); 
end // 

私はそれを呼び出すようにしようとすると、しかし、それは私に、このエラーを与える:

mysql> call addSavingAccount(103, 'B505'); 
ERROR 1136 (21S01): Column count doesn't match value count at row 1 

トリガーを含め、それにリンクできるものを調べました。しかし、すべてがうまくいくはずです。ここでは、トリガーの私のリストがある:私はテーブルを定義し

create trigger balance_change_saving after update on saving for each row 
begin 
if old.balance != new.balance 
then 

insert into balance_update_history values(null, 'saving', new.account_number, old.balance, new.balance, 
              (SELECT NOW()), (select USER())); 
end if; 
end// 

create trigger balance_insert_saving after insert on saving for each row 
begin 
insert into balance_update_history values(null, 'saving', new.account_number, 0, new.balance, (select now()), 
              (select user())); 
end // 


create trigger balance_delete_saving after delete on saving for each row 
begin 
insert into balance_update_history values(null, null, null, old.balance, null, 
             (SELECT NOW()), (select USER())); 
end // 

そして、ここでは、次のとおりです。

create table if not exists saving(account_number varchar(10) , customer_id int(10), balance decimal(8,2), primary key(account_number)); 

私は本当にこれを理解するためにしたいと思います。

答えて

0

4つではなく、テーブル作成ステートメントに基づいて3つの列があります。 (そのインサートの最後の0は何ですか?)

また、この手順では、挿入値がテーブルの作成順序に対して順序が違うように見えますか?したがって、テーブルに一致するように挿入値を再配置するか、挿入する列を指定することができます。

+1

私は1秒間私の顔に手を入れなければなりませんでした。お手伝いありがとう。 –

関連する問題