|
|
|
java и таблицы PSQL
|
|||
|---|---|---|---|
|
#18+
Добрый день, я только начал изучать SQL, и что бы обучение не было голословным, сразу взялся за реализацию реальной задачи с базой под управлением PostgreSQL. Я столкнулся с некоторыми сложностями, решение которых нагуглить, к сожалению, не смог. 1) Как можно получить список типов для всех колонок таблицы? Сейчас делаю запросом Код: sql 1. Как сделать тоже самое, используя Java ? Думаю, с именами колонок, будет аналогично. 2)Еще непонятно, как определять атрибуты столбца: NULL/NOT NULL, PRIMARY KEY, etc 3) Отдельный вопрос про SERIAL: при получение типа, этот столбец возвращает "INT" и его обработка не представляется возможной. Есть ли метод, позволяющий отличить SERIAL столбец? Благодарю за понимание. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2013, 21:06:31 |
|
||
|
java и таблицы PSQL
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, Я не могу разобраться как выявить SERIAL столбец. Насколько я понял, PostgreSQL при добавлении SERIAL/BIGSERIAL делает следующее: 1) создает счетчик по имени таблицы-столбца 2) переводит из SERIAL/BIGSERIAL в INT/BIGINT 3) Обновляет модификаторы столбца, делая его NOT NULL DEFAULT Т.е. со стороны Java Это просто столбец с целыми числами с NOT NULL но ведь так не может быть, драйвер то должен предоставлять какие - либо интерфейсы для нахождения таких полей. Я, конечно, могу отслеживать по PRIMARY KEY, но мне кажется, это некорректным, с конце концов ключом может быть далеко не счетчик. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2013, 13:43:30 |
|
||
|
java и таблицы PSQL
|
|||
|---|---|---|---|
|
#18+
LinuxAwakeТ.е. со стороны Java Это просто столбец с целыми числами с NOT NULL Cам postgre после создания считает, что это int, а не serial. jdbc больше не откуда брать инфу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2013, 14:20:19 |
|
||
|
java и таблицы PSQL
|
|||
|---|---|---|---|
|
#18+
ukku, Допустим, у меня есть таблица: Код: sql 1. 2. 3. 4. 5. 6. 7. и есть окно ввода данных. Мне надо проверять, ввел ли пользователь все поля NOT NULL, но в то же время, что бы они не являлись SERIAL. Поле ID я могу отбросить по проверки на PRIMARY KEY, ну а как быть с NUM? Как Вы сами говорите, оно от AGE даже для Postgres не отличается, не то что для джавы. Или получать список счетчиков для таблицы, а потом парсить и таким образом получать имя колонки, которая создала этот счетчик? Или вообще не использовать auto increment кроме как для генерации id ? Но это как, убого, что-ли. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2013, 14:35:16 |
|
||
|
java и таблицы PSQL
|
|||
|---|---|---|---|
|
#18+
LinuxAwakeukku, Допустим, у меня есть таблица: Код: sql 1. 2. 3. 4. 5. 6. 7. и есть окно ввода данных. Мне надо проверять, ввел ли пользователь все поля NOT NULL, но в то же время, что бы они не являлись SERIAL. Поле ID я могу отбросить по проверки на PRIMARY KEY, ну а как быть с NUM? Как Вы сами говорите, оно от AGE даже для Postgres не отличается, не то что для джавы. Или получать список счетчиков для таблицы, а потом парсить и таким образом получать имя колонки, которая создала этот счетчик? Или вообще не использовать auto increment кроме как для генерации id ? Но это как, убого, что-ли. 1) Все есть в документации по PostgreSQL. Даже на русском языке, хоть и не для актуальной версии. 2) В SQL есть "волшебное слово" "DEAFULT", после которого можно задать значение по умолчанию. 3) Список счетчиков для таблиц в общем случае получить не надо, если вы этого хотите, то значит вы что-то делаете не так. Т.к. это в общем случае, вы не сможете гарантированно получить непрерывную последовательность (см. ACID) 4) Значения NUM вообще не надо вводить, т.к. при добавлении записи он автоматом получить значение. Либо вы что-то делаете не то. Совет: Почитайте документацию по PostgreSQL, про типы и про псевдотип SERIAL. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2013, 10:49:48 |
|
||
|
java и таблицы PSQL
|
|||
|---|---|---|---|
|
#18+
mad_nazgul, >>Значения NUM вообще не надо вводить, т.к. при добавлении записи он автоматом получить значение. Так в этом то и мой вопрос: как моя форма узнает, что вот NUM можно не отображать , а AGE нужно отобразить? По флагу DEFAULT? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2013, 16:12:10 |
|
||
|
java и таблицы PSQL
|
|||
|---|---|---|---|
|
#18+
LinuxAwakemad_nazgul, >>Значения NUM вообще не надо вводить, т.к. при добавлении записи он автоматом получить значение. Так в этом то и мой вопрос: как моя форма узнает, что вот NUM можно не отображать , а AGE нужно отобразить? По флагу DEFAULT? Отчасти это бочина авторов JDBC для Postgres. Могли бы уже и тип добавить. Но ещё вот пишут что SERIAL, это не отдельный тип, а псевдо-тип. Это просто указание на то что Postgres должен создать ещё и sequence для этой колонки. Можно попробовать найти этот sequence по имени. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2013, 16:48:53 |
|
||
|
java и таблицы PSQL
|
|||
|---|---|---|---|
|
#18+
Опять же такие вещи, лучше держать в отдельном мапинге, а не решать на осннове метаданных. А то в какой-то момент окажется что эти поля таки нужны на UI, хотя бы в read-only. И что делать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2013, 16:54:44 |
|
||
|
java и таблицы PSQL
|
|||
|---|---|---|---|
|
#18+
LinuxAwakemad_nazgul, >>Значения NUM вообще не надо вводить, т.к. при добавлении записи он автоматом получить значение. Так в этом то и мой вопрос: как моя форма узнает, что вот NUM можно не отображать , а AGE нужно отобразить? По флагу DEFAULT? у вас генератор форм? Если нет, то форму проектируют в статике с дизайнером. Т.е. маппят Нужные показываемые поля. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2013, 16:55:09 |
|
||
|
java и таблицы PSQL
|
|||
|---|---|---|---|
|
#18+
http://www.bartbusschots.ie/blog/?p=614 The name of this sequence can be trivially determined from the name of the table and the name of the column. It takes the following form: [tableName]_[columnName]_seq. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2013, 17:09:07 |
|
||
|
|

start [/forum/topic.php?desktop=1&fid=59&tid=2128911]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
42ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
49ms |
get tp. blocked users: |
2ms |
| others: | 279ms |
| total: | 418ms |

| 0 / 0 |
