带有自动增量的SQLite3多个主键字段(rails项目)

时间:2015-10-19 20:11:20

标签: mysql ruby-on-rails sqlite

我正在尝试创建一个用于Rails应用程序的SQLite3数据库。 我已经在MySQL中创建了相同的数据库,并尝试在SQLite3中复制相同的数据库。

MySQL的创建语法是

CREATE TABLE `leaderboard_A` (
  `league` tinyint(1) NOT NULL,
  `id` bigint(10) NOT NULL,
  `cut` tinyint(1) NOT NULL,
  `wd` tinyint(1) NOT NULL,
  `tie` tinyint(1) NOT NULL,
  `pos` int(4) NOT NULL,
  `pos_s` varchar(10) COLLATE utf8_unicode_ci NOT NULL,
  `name` varchar(128) COLLATE utf8_unicode_ci NOT NULL,
  `to_par` smallint(3) NOT NULL,
  `to_par_s` varchar(5) COLLATE utf8_unicode_ci NOT NULL,
  `hole` varchar(8) COLLATE utf8_unicode_ci NOT NULL,
  `round` smallint(6) NOT NULL,
  `round_s` varchar(8) COLLATE utf8_unicode_ci NOT NULL,
  `round_1` int(11) NOT NULL,
  `round_2` int(11) NOT NULL,
  `round_3` int(11) NOT NULL,
  `round_4` int(11) NOT NULL,
  `total` smallint(4) NOT NULL,
  `tournament_id` varchar(13) COLLATE utf8_unicode_ci NOT NULL,
  `tournament_name` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  `year` smallint(4) NOT NULL,
  PRIMARY KEY (`league`,`id`,`tournament_id`),
  KEY `pos` (`pos`),
  KEY `player_key` (`name`,`tournament_name`,`year`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

我相信我需要为我的SQLite3架构添加一个ID列。 是否有可能在我的SQLite3中有一个自动增量列以及其他列也是主要的?

我已经编写了一些SQLite3 SQL,只有略微不同的列设置,如下所示。

CREATE TABLE IF NOT EXISTS Leaderboard (
id INTEGER,
current_position TEXT, 
current_round INTEGER,
country TEXT, 
is_amateur BOOLEAN, 
first_name TEXT, 
last_name TEXT,
name TEXT,
player_id INTEGER,
round1 INTEGER,
round2 INTEGER,
round3 INTEGER,
round4 INTEGER,
start_position TEXT,
status TEXT,
thru INTEGER,
today INTEGER,
total INTEGER,
tournament_name TEXT,
tournament_id INTEGER,
start_date datetime,
end_date datetime,
year INTEGER, 
PRIMARY KEY (id, player_id, tournament_id, year)
)

我的最终解决方案是读入JSON记录并更新详细信息(如果存在,如果没有使用下面的SQL创建记录)

INSERT OR REPLACE INTO Leaderboard (
current_position, current_round, country, is_amateur, first_name, last_name, name, player_id, round1, round2, round3, round4, start_position, status, thru, today, total, tournament_name, tournament_id, start_date, end_date, year)
 VALUES
('1','4','USA','false','Jordan','Spieth','Spieth, Jordan','34046','68','67','71','69','T1','active','18','-1','-78','US Open','026','2015-06-18','2015-06-21','2015')

任何反馈,建议或修正都将不胜感激。所有这一切的新工作。 :)

0 个答案:

没有答案