我正在使用JDBC / UCanAccess编写程序,并且我在创建其中一个表时发现,而不是使用DateTime格式创建四个列,它也将相同的格式应用于下一列,取代其他格式:
CREATE TABLE Person (
Id INT NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1),
Name VARCHAR(40),
Surname VARCHAR(40),
Card VARCHAR(9),
Email VARCHAR(30)
);
CREATE TABLE Place (
Id INT NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1),
Name VARCHAR(40)
);
CREATE TABLE Activity (
Id INT NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1),
Name VARCHAR(40) NOT NULL,
Description1 VARCHAR(500),
Description2 VARCHAR(500),
Id_Person INT,
Hour_Start DATETIME,
Hour_End DATETIME,
Date_Plan_Start DATETIME,
Date_Plan_End DATETIME,
Cost CURRENCY,
Sale CURRENCY,
Id_Place INT,
CONSTRAINT fk_person_activity FOREIGN KEY (Id_Person) REFERENCES Person (Id),
CONSTRAINT fk_place_activity FOREIGN KEY (Id_Place) REFERENCES Place (Id)
);
似乎应该完成所有事情,因为它应该达到Date_Plan_End,但创建的表将Cost作为DateTime,Id_Place作为Currency。如果有人能告诉我为什么会这样,我会很感激。
编辑:错误仍然只插入此内容:
CREATE TABLE Activity (
Id INT NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1),
Name VARCHAR(40) NOT NULL,
Date_Plan_End DATETIME,
Cost CURRENCY,
Sale CURRENCY,
Id_Place INT,
PRIMARY KEY (Id)
);
这个问题似乎与GENERATED ALWAYS AS IDENTITY(从1开始,增加1)有关。它的移除阻止了移位的发生,虽然我不知道为什么。
答案 0 :(得分:0)
这个问题似乎与GENERATED ALWAYS AS IDENTITY(从1开始,增加1)有关。它的移除阻止了位移的发生
这是因为... GENERATED ALWAYS AS IDENTITY ...
是HSQLDB DDL语法,UCanAccess使用Access SQL DDL语法。因此,而不是
CREATE TABLE Activity (
Id INT NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1),
Name VARCHAR(40) NOT NULL,
Date_Plan_End DATETIME,
Cost CURRENCY,
Sale CURRENCY,
Id_Place INT,
PRIMARY KEY (Id)
);
你应该使用
CREATE TABLE Activity (
Id COUNTER PRIMARY KEY,
Name VARCHAR(40) NOT NULL,
Date_Plan_End DATETIME,
Cost CURRENCY,
Sale CURRENCY,
Id_Place INT
);