Нужно ли использовать _ID в качестве первичного ключа SQlite? И он должен быть INT? (Android Dev)

Это, наверное, глупый вопрос, но я еще не смог найти ответ.

Я хочу использовать столбец TEXT с моими собственными уникальными именами в качестве первичного ключа в таблице. Маленький раздел кода для определения этого в моем проекте выглядит примерно так:

...blahblah..."CREATE TABLE " + CAT_BUD_TAB + " (" + CAT_ITEM_ID + "_ID TEXT PRIMARY KEY, "...blahblah.. 

Будет ли это работать, как я собираюсь? Или, возможно, мне нужно использовать «AS ID»? Я только когда-либо видел одиночные таблицы с _ID в качестве числа автоинкремент в. Кроме того, это было предназначено для внешнего ключа в другой таблице, но поскольку я разработал свою базу данных, я прочитал больше информации, и я не уверен, что это действительно имеет значение, используя Андроид и SQLITE?

Благодаря плакатам ниже, но я немного медленный и не уверен, что если я применил право информации, вы могли бы проверить?

Поэтому, если у меня есть оператор create:

 "CREATE TABLE " + CAT_BUD_TAB + " (" + CAT_ITEM_ID + " TEXT PRIMARY KEY, " + IN_OUT + " TEXT, " + BUDGET_AMOUNT + " REAL, " + ACTUAL_AMOUNT_SPENT + " REAL, " + AMOUNT_STRAYED + " REAL, " + OVERBUDGET_TF + " INTEGER, " + AUTOSPEND_TF + " INTEGER);" 

Затем выполните: db.execSQL («SELECT ID, ID AS CAT_ITEM_ID»)

Могу ли я использовать их взаимозаменяемо? Я даже где-нибудь рядом? Haha жаль, что я пытаюсь!

Solutions Collecting From Web of "Нужно ли использовать _ID в качестве первичного ключа SQlite? И он должен быть INT? (Android Dev)"

Вы можете создавать и определять таблицы по своему усмотрению, но если вам придется использовать таблицу через CursorAdapter, которая не будет работать без настройки.

 CursorAdapter: The Cursor must include a column named "_id" or this class will not work. 

Вы должны всегда выдавать select col1 as _id ... для работы.

Поэтому рекомендуется использовать _id в схеме таблицы, и если вы хотите использовать какое-то другое имя, вы можете это сделать. select _id, _id as customname ... поэтому дважды выберите столбец select _id, _id as customname ... с разными именами.

В качестве первичного ключа вы можете иметь все, что хотите.

Но если вы, например, хотите использовать CursorAdapter, который автоматически показывает элементы из Cursor-запроса, вам нужно иметь целочисленный столбец с именем _ID, поскольку он используется здесь.

Но если это не то, что вы планируете использовать со своим столом, вы можете делать то, что хотите!

_id должен иметь тип int в sqlite create (long in Java). Предположим, что это разные классы. В результате вы не можете использовать UUID для первичного ключа.