Я хочу просто увеличить значение столбца в базе данных на 1, но я всегда получаю expression evaluation not supported
error /
Я использую этот запрос:
UPDATE SISTEMSKA_OGRANICENJA SET TRENUTNO = ((SELECT N.TRENUTNO FROM
SISTEMSKA_OGRANICENJA N WHERE N.KORISNIKID = @KorisnikID AND N.OGRANICENJE =
@Ogranicenje) + 1) WHERE KORISNIKID = @KOrisnikID
AND OGRANICENJE = @Ogranicenje
Iтакже пытался без объявления N в операторе выбора, но он все еще не работает.
Я также пытался
UPDATE SISTEMSKA_OGRANICENJA SET TRENUTNO = TRENUTNO + 1) WHERE KORISNIKID
= @KOrisnikID AND OGRANICENJE = @Ogranicenje
Я знаю, в чем проблема, поле TRENUTNO
имеет тип Varchar
.Как я могу преобразовать его в int
добавить 1 и затем обратно в varchar
все в одном запросе?Я знаю, как сделать это с двумя, но это будет медленнее.
Временно я сделал это в 2 запроса, как это:
public static void UvecajTrenutno(Ogranicenja ogranicenje, int korisnikId)
{
using (FbConnection con = new FbConnection(M.Baza.connectionString))
{
int trenutno = -1;
con.Open();
using (FbCommand cmd = new FbCommand("SELECT TRENUTNO FROM SISTEMSKA_OGRANICENJA WHERE KORISNIKID = @KorisnikID AND OGRANICENJE = @Ogranicenje", con))
{
cmd.Parameters.AddWithValue("@KorisnikID", korisnikId);
cmd.Parameters.AddWithValue("@Ogranicenje", ogranicenje);
FbDataReader dr = cmd.ExecuteReader();
if(dr.Read())
{
trenutno = Convert.ToInt32(dr[0]);
}
}
if(trenutno < 0)
{
MessageBox.Show("Doslo je do greske! - Korisnik.Ogranicenje.UvecajTrenutno");
return;
}
using (FbCommand cmd = new FbCommand("UPDATE SISTEMSKA_OGRANICENJA SET TRENUTNO = @TR WHERE KORISNIKID = @KorisnikID AND OGRANICENJE = @Ogranicenje", con))
{
cmd.Parameters.AddWithValue("@KorisnikID", korisnikId);
cmd.Parameters.AddWithValue("@Ogranicenje", ogranicenje);
cmd.Parameters.AddWithValue("@TR", trenutno + 1);
cmd.ExecuteNonQuery();
}
}
}