2016-02-09 37 views
10

W Javie mogę powiedzieć Integer.MAX_VALUE, aby uzyskać największy numer, który może pomieścić typ int.Czy w PostgreScie jest stała MAX_INT?

Czy w Postgres występuje podobna stała/funkcja? Chciałbym uniknąć twardego kodowania numeru.

Edytuj: powodem, dla którego pytam, jest to. Istnieje starsza tabela z identyfikatorem typu integer, poparta sekwencją. W tej tabeli znajduje się wiele przychodzących wierszy. Chcę obliczyć, ile czasu upłynie, zanim skończy się integer, więc muszę wiedzieć "ile identyfikatorów zostało" podzielonych przez "jak szybko je wydamy".

+0

Nie ma takiej stałej Gdzie to powinno być? W bazie danych nie ma wstępnie zdefiniowanych "klas", takich jak "Integer". Jeśli chcesz, możesz napisać funkcję, która po prostu zwraca 2147483647 –

+3

@a_horse_with_no_name No cóż, istnieje wiele predefiniowanych i magicznych stałych w SQL, w tym postgres: 'CURRENT_TIMESTAMP', na przykład. Nie wydaje mi się, żebym miał "MAX_INT' /' INT_MAX'. Lub, jeśli o to chodzi, funkcja 'sizeof()' w stylu C. – IMSoP

+2

Żadna z tych wstępnie zdefiniowanych funkcji w SQL nie ujawnia szczegółów implementacji_. SQL tak naprawdę nie zajmuje się niskopoziomowymi informacjami, takimi jak 'sizeof()', ponieważ celem SQL jest uwolnienie cię od konieczności poznania tego. Możesz zapytać o rozmiar _value_, ale nie o rozmiar typu danych. Prawdziwe pytanie brzmi: dlaczego myślisz, że tego potrzebujesz? Jaki jest podstawowy problem, który próbujesz rozwiązać z tym? –

Odpowiedz

4

Nie ma stałej wartości, ale myślę, że rozsądniej jest zakodować kod w PostgreSQL niż w Javie.

W języku Java celem filozoficznym jest, aby wartość Integer była wartością abstrakcyjną, więc ma sens, aby zachowywać się tak, jakby nie wiesz, jaka jest maksymalna wartość.

W Postgresie jesteś o wiele bliższy nieusuwanemu metalowi, a definicja typu integer polega na tym, że jest to a 4-byte signed integer.

+0

Rozmiar int jest również pobierany w C, w którym zapisano Postgres. – sudo

+0

Postgres 'liczba całkowita' nie jest taka sama jak C ' int' –

+0

Tak. Przepraszam, nie chciałam powiedzieć, że jest on wyodrębniony w Postgresie. Postgres definiuje limity liczby całkowitej niezależnie. – sudo