https://stepby-yun.tistory.com/192?category=554522
mysql while 여러시도..
https://stepby-yun.tistory.com/191 mysql procedure 프로시저 생성 및 실행 (구본문자 DELIMITER ) while문 해보려는데.. 나와같은 의문을 가지신 분 프로시저 꼭 만들어서 써야돼? https://stackoverflow.com/q..
stepby-yun.tistory.com
프리비어슬리~
새로 생긴 행이랑 이전 행 시간을 빼서 1분 이상일때마다
값을 넣어줄까? 했는데 무한insert되고 난리남
(이 글의 결론)
1분이 흐를때마다 ->이자증액값을 넣어준다
에서
값넣는다. 1분마다시간증가, 이자증액,
이렇게
insert할때 한꺼번에 넣는 걸로 식만듦..(저번에 한달씩 증가랑 똑같이 함.)
------
기준 잡기의 중요성..
한 시간씩 증가하고
넣고 먼저 해보자
최대증가한 시간
몇번째 행의 시간이 얼만지 생각!
use test;
truncate sequence;
set @setTime = (select subtime(now(),'00:02:00'));
insert into sequence (name,deposit_date,deposit_amount,interest_amount) values ('이소윤',@setTime,'10000000','0');
drop procedure if exists pro;
delimiter //
create procedure pro()
begin
while (select id from sequence order by id desc limit 1) < 10 do
INSERT INTO sequence (name,deposit_date,deposit_amount,interest_amount)
select
(select name from sequence order by id desc limit 1),
date_add((select deposit_date from sequence where deposit_date order by id desc limit 1),INTERVAL 1 hour),
((select deposit_amount from sequence where deposit_amount order by id desc limit 1) + (select interest_amount from sequence where interest_amount order by id desc limit 1)),
(select deposit_amount from sequence where id='1')* 0.04 /12;
end while;
end //
delimiter ;
call pro();
select * from sequence;
아 다음행에 insert 추가 되는게
마지막 id가 9이니까
10까지 뜨는거구나~!!
그래도 deposit_amount의 마지막행 10000000을 구해서 이자액 33333을 구했으면
2번째 행에 deposit_amount도 들어갈 수 있는거 아닌가 왜
null값이지?
+
지금은 한번에 들어가는거니까
날짜를 추가하고 추가될때마다 이자액이 찍히게 하면 되려나...
update써서 해보자
update 안되는이유 여기서 세팅 설정바꿔줘야함
https://lightblog.tistory.com/193
[MYSQL] 에러 번호 1175 Safe Update 해결방법
MySQL에서 쿼리를 실행하다보면 다음과 같은 에러를 마주할 때가 있다. Error Code: 1175. You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column To disable..
lightblog.tistory.com
오마갓 숫자를 ''
여기 넣어서 문자열로 만들어서 쓰고있었네
하지만 잘 안됨
use test;
truncate sequence;
set @setTime = (select subtime(now(),'00:02:00'));
insert into sequence (name,deposit_date,deposit_amount,interest_amount) values ('이소윤',@setTime,10000000,0);
drop procedure if exists pro;
delimiter //
create procedure pro()
begin
DECLARE n varchar(45) default "이소윤" ;
while (select id from sequence order by id desc limit 1) < 10 do
INSERT INTO sequence (deposit_date) select (date_add((select deposit_date from sequence where deposit_date order by id desc limit 1),INTERVAL 1 hour));
update sequence
set
name = n,
interest_amount = (select deposit_amount where deposit_amount order by id desc limit 1)* 0.04 /12;
end while;
end //
delimiter ;
call pro();
select * from test.sequence;
---
시간 증가만 insert해주고
나머지는 update로 넣어주려 했으나 잘안됨..
그래서 원래 한번에 다 insert한 걸로 수정함
중간에 null인거..
흠
그냥 id가 2인거 조건으로 넣어줌..
이러면 안될거같지만
use test;
truncate sequence;
set @setTime = (select subtime(now(),'00:02:00'));
insert into sequence (name,deposit_date,deposit_amount,interest_amount) values ('이소윤',@setTime,10000000,0);
drop procedure if exists pro;
delimiter //
create procedure pro()
begin
while (select id from sequence order by id desc limit 1) < 10 do
INSERT INTO sequence (name,deposit_date,deposit_amount,interest_amount)
select
(select name from sequence order by id desc limit 1),
date_add((select deposit_date from sequence where deposit_date order by id desc limit 1),INTERVAL 1 hour),
((select deposit_amount from sequence where deposit_amount order by id desc limit 1) + (select interest_amount from sequence where interest_amount order by id desc limit 1)),
(select deposit_amount from sequence where id='1')* 0.04 /12;
end while;
end //
delimiter ;
call pro();
update sequence
set deposit_amount = 10000000
where id = 2;
select * from sequence;
order by limit 1
를 쓰는 것보다 max가 좀더 빠르다는 얘기를 들음
내일 수정해봐야겠다
'데이터베이스 > mySQL' 카테고리의 다른 글
mysql 한시간마다 이자액으로 원금 줄어드는 계산식 MAX MIN 사용 (0) | 2022.05.13 |
---|---|
MAX MIN order by limit 차이 뭘 쓸지 (0) | 2022.05.13 |
mysql while 여러시도.. (0) | 2022.05.10 |
mysql procedure 프로시저 생성 및 실행 (구본문자 DELIMITER ) (0) | 2022.05.10 |
mysql 변수설정 set, declare 사용하려고 하는데...흠.. (0) | 2022.05.10 |