【发布时间】:2018-11-04 18:34:30
【问题描述】:
下面是我创建两个表的代码,由于播放列表和歌曲是多对多的关系,我继续创建一个连接表...
CREATE TABLE Playlist (
Id VARCHAR(20),
[Name] VARCHAR(50),
Create_Date DATE,
Username VARCHAR(20),
PRIMARY KEY (Id),
FOREIGN KEY (username) REFERENCES Users (username)
);
CREATE TABLE Song (
Id VARCHAR(20),
Title VARCHAR(50),
Genre VARCHAR(20),
[Length] TIME,
[Language] VARCHAR(20),
Album_Id VARCHAR(20),
Company_Id VARCHAR(20),
PRIMARY KEY (Id),
FOREIGN KEY (Company_Id) REFERENCES Company (Id),
FOREIGN KEY (Album_Id) REFERENCES Album (Id)
);
CREATE TABLE Song_Playlist (
Song_Id VARCHAR(20) NOT NULL,
Playlist_Id VARCHAR(20) NOT NULL,
PRIMARY KEY (Song_Id, Playlist_Id),
FOREIGN KEY (Song_id) REFERENCES Song (Id) ON DELETE RESTRICT ON UPDATE CASCADE,
FOREIGN KEY (Playlist_Id) REFERENCES Playlist (Id) ON DELETE RESTRICT ON UPDATE CASCADE
);
但是,当我尝试创建联结表时,它一直给我这个错误消息:
消息 156,级别 15,状态 1,第 5 行关键字“RESTRICT”附近的语法不正确。
我想知道如何解决这个问题,如果我想在 Song 表中为 Genre 创建索引,我该怎么做?
【问题讨论】:
-
这看起来不像 MySQL。你确定你没有改用 SQL Server 吗?
-
@MadhurBhaiya 我认为这不是 SQL Server,因为 SQL Server 有
[ ON DELETE { NO ACTION | CASCADE | SET NULL | SET DEFAULT } ]没有ON DELETE RESTRICT。 -
是的,我使用的是 SQL 服务器。不知怎的,我打错了...
标签: sql sql-server indexing junction-table