.NET のクラスからテーブルを生成していますが、クラスにkey
MySQL の予約キーワードであるフィールド名がある可能性があるという問題があります。create table ステートメントでこれをエスケープするにはどうすればよいでしょうか? (注: 以下のもう 1 つの問題は、インデックス付け/一意化するにはテキストが固定サイズでなければならないことです)
create table if not exists misc_info (
id INTEGER PRIMARY KEY AUTO_INCREMENT NOT NULL,
key TEXT UNIQUE NOT NULL,
value TEXT NOT NULL)ENGINE=INNODB;
ベストアンサー1
二重引用符を使用できるのは、ANSI SQL モード有効になっています
CREATE TABLE IF NOT EXISTS misc_info
(
id INTEGER PRIMARY KEY AUTO_INCREMENT NOT NULL,
"key" TEXT UNIQUE NOT NULL,
value TEXT NOT NULL
)
ENGINE=INNODB;
または、独自のバックティックエスケープを使用します。(`
さまざまなキーボードレイアウトで文字がどこにあるかは、この答え)
CREATE TABLE IF NOT EXISTS misc_info
(
id INTEGER PRIMARY KEY AUTO_INCREMENT NOT NULL,
`key` TEXT UNIQUE NOT NULL,
value TEXT NOT NULL
)
ENGINE=INNODB;