T-SQL到SQLite的转换

时间:2016-07-24 21:28:51

标签: sqlite tsql

我有以下T-SQL语句用于创建我已修改为与SQLite一起使用的表

CREATE TABLE prerequisite_lesson(
   next_lesson_id INT NOT NULL,
   prereq_lesson_id INT NOT NULL,
   CHECK(prereq_lesson_id) NOT (lesson_id),
CONSTRAINT pk_prereq PRIMARY KEY (lesson_id, prereq_lesson_id),
FOREIGN KEY(next_lesson_id) REFERENCES lessons(lesson_id),
FOREIGN KEY(prereq_lesson_id) REFERENCES lessons(lesson_id));

当我尝试按如下方式创建表时,我遇到了4个错误:

  1. 无法识别的数据类型。 (靠近“(”在111位置)

  2. 预计会有逗号或结束括号。 (位于第112位的“prereq_lesson_id”附近)

  3. 声明开始意外。 (位于第112位的“prereq_lesson_id”附近)

  4. 无法识别的声明类型。 (位置130处的“NOT”附近)

  5. 有人可以提供错误帮助吗?提前谢谢。

1 个答案:

答案 0 :(得分:1)

首先要创建lessons

create table lessons(
  lesson_id int primary key not null
);

然后有一些约束检查语法。请参阅示例here。同样,对于主键对,可能需要next_lesson_id而不是lesson_id

CREATE TABLE prerequisite_lesson(
   next_lesson_id INT NOT NULL,
   prereq_lesson_id INT NOT NULL CHECK(NOT(next_lesson_id)),
   CONSTRAINT pk_prereq PRIMARY KEY (next_lesson_id, prereq_lesson_id),
FOREIGN KEY(next_lesson_id) REFERENCES lessons(lesson_id),
FOREIGN KEY(prereq_lesson_id) REFERENCES lessons(lesson_id));

完整架构创建小提琴here