다음 구문에서요... (primary key가 없는 상태이구요..)
----------------------------------
sql = "INSERT INTO logger_rain_acc (ID, RainDate, H20, DaySum) " +
"select * from (select @id_3, @RainDate, @r_abs_hour_3, @DaySum) as tmp " +
"where not exists (select ID from logger_rain_acc where ID=@id_3 and RainDate=@RainDate);";
cmd.ExecuteNonQuery();
----------------------------------
조건에 맞는 컬럼이 없는 상태에서요.. insert가 되어야 하는 상황인데,
select * from (select @id_3, @RainDate, @r_abs_hour_3, @DaySum) as tmp 라고 쓰면 안써지구요..
select * from (select @id_3, @RainDate, 77, @DaySum) as tmp 라고 쓰면 써지는데 이 차이가 뭘까요?
(이 값을 변수로 넣어야 하거든요..)
참고로, ID : Varchar(15) / RDate : Varchar(10) / H20 : Int(2) / DaySum: Int(2) 입니다.
sql = "UPDATE logger_rain_acc SET H20=@r_abs_hour_3, DaySum=@DaySum ) " +
"Where ID=@id_3 and RainDate=@RainDate;";
이 업데이트는 잘 됩니다. (똑같은 @r_abs_hour_3 변수를 썼는데요.)
sql = "INSERT INTO logger_rain_acc (ID, RainDate, H00, DaySum) VALUES(@id, @RainDate, @r_abs_hour, @DaySum);";
이 인서트 구문도 잘 됩니다.
[최초 등록일: ]
[최종 수정일: 10/31/2015]