создать таблицу с автоинкрементом столбца? - PullRequest
0 голосов
/ 05 июля 2018

Модуль sql Racket предоставляет create-table в качестве абстракции для оператора CREATE TABLE sql.

Как мне указать спецификацию столбца (т. Е. Id) с помощью AUTO INCREMENT?

Когда я пытаюсь

(create-table numbers
  #:columns [n integer #:not-null #:auto-increment] [t text]
  #:constraints (primary-key n))

тогда выдает ошибку:

create-table: unexpected term
  parsing context: 
    while parsing ColumnDef
    while parsing CreateTableInner in: #:auto-increment

Можно ли указать столбец автоинкремента в create-table ?

1 Ответ

0 голосов
/ 05 июля 2018

Насколько я знаю, create-table в пакете sql не обрабатывает auto-increment. Вместо этого рассмотрите возможность использования query-exec напрямую. Вот фрагмент кода Розетты.

#lang at-exp racket

(require db)
(define postal (sqlite3-connect #:database "/tmp/postal.db" #:mode 'create))

(define (add! name street city state zip)
  (query-exec postal
    @~a{INSERT INTO addresses (name, street, city, state, zip)
        VALUES (?, ?, ?, ?, ?)}
    name street city state zip))

(unless (table-exists? postal "addresses")
  (query-exec postal
    @~a{CREATE TABLE addresses(
          id INTEGER PRIMARY KEY,
          name   TEXT NOT NULL,
          street TEXT NOT NULL,
          city   TEXT NOT NULL,
          state  TEXT NOT NULL,
          zip    TEXT NOT NULL)}))

Подробнее здесь: https://rosettacode.org/wiki/Table_creation/Postal_addresses#Racket

...