2012-06-25 14 views
10

Powiel możliwe:
Why are Oracle table/column/index names limited to 30 characters?Dlaczego długość nazw procedur składowanych jest maksymalna?

Pisząc procedurę przechowywaną w Oracle, Wybrałem nazwę szczególnie opisową, a gdy próbuje zaktualizować skrypt poinformowano mnie nazwa była zbyt długa .

37 15 PLS-00114: identifier 'blah_blah_blah_blah_blah_blah' too long 

Dlaczego jest taki restrykcyjny limit nazw proc przechowywane? Czy jest to tylko specyficzne dla Oracle, czy jest to powszechne w innych systemach db?


Niestety dla duplicate

+0

W SQL Server jest to "128" znaków, ponieważ jest to maksymalna długość dla 'sysname' (typ danych używany w podstawowych tabelach systemu) –

+0

To znacznie lepiej niż 30 w Oracle, jak szybko się dowiedziałem. – JWiley

+1

Ponieważ Oracle pochodzi z czasów, gdy 30 znaków było uważane za więcej niż wystarczająco! W końcu, przy nazwach plików składających się z 8 znaków, 30 to tona! –

Odpowiedz

1

jego faktycznie tylko 30 znaków w Oracle.

Każdy język/db ma limit długości podczas definiowania nazw, ponieważ nazwa każdego obiektu utworzonego w DB jest przechowywana w tabelach systemowych, a każda kolumna ma pewną stałą długość.

Jeśli chodzi o wydajność, w przypadku DB przechowujemy krótkie nazwy.

+8

hmm jak robi to odpowiedź * Dlaczego istnieje taki restrykcyjny limit na przechowywanych nazwach procesowych? * –

+0

To samo wyskakuje dla MySQL - dla MySQL 5.7 (i pewnie z innych wersji) jest 64 - instrukcja - https://dev.mysql.com/doc/refman/5.7/en/identifiers .html –

+1

@ConradFrix Wspomniałem, że wszystkie informacje o obiektach db są przechowywane w samych tabelach systemowych. Tabele mają kolumnę i mają zdefiniowany rozmiar, więc ogranicza to długość zawartości, która ma być przechowywana. –

Powiązane problemy