2017-04-02 4 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

네 개의 테이블 생성 문을 기반으로하는 세 개의 열이 있습니다. 네 가지가 아닙니다. (해당 인서트에서 마지막 0은 무엇입니까?)

또한이 절차에서는 삽입 값이 테이블 생성 순서에 비례하여 순서가 잘못되었다고 보입니까? 따라서 표와 일치하도록 삽입 값을 재 배열하거나 삽입으로 열을 지정할 수 있습니다.

+1

나는 내 얼굴에 손을 넣어야했다. 도와 주셔서 감사합니다. –