W prostej instrukcji SELECT napotkałem przepełnienie arytmetyczne. Zapytanie było jak poniżej, np
SELECT [SaleValue] FROM Sales
[SaleValue]miał typ danych, decimal(9,0)a nie kolumnę obliczeniową.
Powodem tego było to, że jakoś kolumna miała wiersz, w którym to pole zapisywało wartość WIELKĄ niż określony typ danych, np decimal(10,0).
Mogłem sprawić, by zaznaczenie działało tylko wtedy, gdy zwiększyłem rozmiar kolumny. Ta tabela ma dwa inne wystąpienia w dwóch innych kolumnach i wierszach.
Jak to możliwe? Jak w pierwszej kolejności zapisano wartość spoza zakresu w kolumnie?
Używam serwera Microsoft SQL + to jest tabela podstawowa, a nie widok.
decimal- a decimal(9,0)powinien zajmować 5 bajtów, a decimal(10,0)9. Więc myślę, że jest mniej prawdopodobne, że możesz to zrobić poprzez edycję tabel systemowych, ponieważ nie będziesz miał prawidłowy rozmiar pamięci dla danych w każdym wierszu.