Использование bigint в PostgreSQL и SQLite

Как указать bigint в create_table для PostgreSQL и SQLite в файле схемы rails?

Я просмотрел типы данных, чтобы увидеть, что между ними существует перенос, и проверил их возможности здесь и здесь.

Затем я увидел этот вопрос, и мне было интересно, на самом деле не было никакого способа создать bigint внутри схемы create_table.

Кроме того, я не обязательно ищу bigint, а скорее 64-битный тип данных; подпись не имеет значения (я буду обращаться только к битам).


person RileyE    schedule 19.06.2013    source источник
comment
Первый вопрос: почему вы пытаетесь использовать растровое изображение внутри реляционной базы данных? Вы всегда можете забить квадратный колышек в круглое отверстие, но это будет беспорядочно.   -  person mu is too short    schedule 19.06.2013
comment
@muistooshort Мне просто нужно что-то, что будет работать на любой платформе, но мне нужны все 64 бита для моей колонки.   -  person RileyE    schedule 19.06.2013
comment
Ты не понимаешь. Я сомневаюсь в вашем, я буду получать доступ только к решению о дизайне битов. Это просто непрозрачный блок данных, который база данных просто хранит, или вы ожидаете выполнять битовые операции внутри запросов?   -  person mu is too short    schedule 19.06.2013
comment
@muistooshort Это просто непрозрачный блок данных. Я буду выполнять все битовые операции вне запросов.   -  person RileyE    schedule 19.06.2013
comment
@muistooshort Причина, по которой я выбрал bigint, заключается в том, что это единственное, что имело размер 8 байт и было на обеих платформах.   -  person RileyE    schedule 19.06.2013


Ответы (1)


В PostgreSQL:

create table whatever ( some_column bigint );

Это все. Но если вам нужны битовые операции, лучше использовать выделенный тип данных, а именно bit (н)

person Community    schedule 19.06.2013
comment
Но возможен ли бит и в SQLite? Кроме того, будет ли это работать в схеме рельсов? - person RileyE; 19.06.2013
comment
@RileyE: Не так просто, как в Postgres. Тип Postgres BIT или VARBIT может иметь неограниченную длину (например, в мегабайтах) и изначально поддерживает такие операции, как &, | и их совокупные эквиваленты bit_and, bit_or. Ничего подобного для SQLite не существует, но я думаю, вы можете реализовать его повторно. - person mvp; 20.06.2013
comment
@RileyE Это также будет работать в SQLite из-за его динамической системы типов. - person CL.; 20.06.2013
comment
@mvp Хорошо. Это приятно знать, но я думаю, что мне, возможно, придется придерживаться кросс-платформенных типов, верно? Спасибо за эту вкусную порцию BIT информации :) - person RileyE; 20.06.2013
comment
@КЛ. Итак, если я останусь с обычной реализацией bigint, то все будет в порядке? Но как насчет проблем с тем, что он не работает в этот вопрос? - person RileyE; 20.06.2013