2017-03-02 165 views
0

我有这样的代码,我从MySQL转换:MS SQL服务器:主键,自动递增,并插入到失败

CREATE TABLE "odds_soccer" 
(
    "id" INT NOT NULL PRIMARY KEY , 
    "checked" DATETIME NOT NULL , 
    "bookmaker" VARCHAR(255) NOT NULL , 
    "gametime" DATETIME NOT NULL , 
    "team1" VARCHAR(255) NOT NULL , 
    "team2" VARCHAR(255) NOT NULL , 
    "odds_1" FLOAT NOT NULL , 
    "odds_x" FLOAT NOT NULL , 
    "odds_2" FLOAT NOT NULL 
); 

INSERT INTO "odds_soccer" ("id", "checked", "bookmaker", "gametime", "team1", "team2", "odds_1", "odds_x", "odds_2") 
VALUES (null, '2017-03-02 16:00:00', 'example.com', '2017-03-02 04:30:00', 'MYTEAMA', 'MYTEAMB', '3.15', '3.15', '2.70'); 

唯一的问题是......它barfs,我不能插入使用空这是公平的...

但我如何插入一个记录,其中我只是想ID自动增量

我曾尝试过各种变化 - 所有的失败 - 我必须失去了一些东西明显...

+3

MS SQL是SQL-Server时,不MySQL的。请将来使用正确的标签。 – Barmar

+0

正如Barmar所说,请更新标签和这个问题的标题。你的问题是针对MySQL的。 –

+0

如果我标记它是一个错误的MySQL。应该已经MS SQL – Tom

回答

1

正确的做法是:

CREATE TABLE "odds_soccer" (
    "id" INT IDENTITY(1,1) PRIMARY KEY , 
    "checked" DATETIME NOT NULL , 
    "bookmaker" VARCHAR(255) NOT NULL , 
    "gametime" DATETIME NOT NULL , 
    "team1" VARCHAR(255) NOT NULL , 
    "team2" VARCHAR(255) NOT NULL , 
    "odds_1" FLOAT NOT NULL , 
    "odds_x" FLOAT NOT NULL , 
    "odds_2" FLOAT NOT NULL 
); 

而这样一来你的id场将自动递增每次在表中插入新记录时。 请注意,如果您的id字段自动递增,则不必在insert语句中指定它。

INSERT INTO "odds_soccer" 
(
    "checked", 
    "bookmaker", 
    "gametime", 
    "team1", 
    "team2", 
    "odds_1", 
    "odds_x", 
    "odds_2" 
) 
VALUES (
    '2017-03-02 16:00:00', 
    'example.com', 
    '2017-03-02 04:30:00', 
    'MYTEAMA', 
    'MYTEAMB', 
    '3.15', 
    '3.15', 
    '2.70' 
); 

Link to documentation(IDENTITY)

+0

它现在的作品!不知道昨天是什么问题 - 但今天再试一次,它的工作原理。接受答案 – Tom