繁体   English   中英

创建主键或唯一键

[英]Creating Primary Keys or Unique Keys

我正在尝试创建一个名为播放列表的表。

用户不能多次创建具有相同名称的播放列表,并且不能多次将同一首歌曲添加到播放列表中。

我试图创建一个复合键,但它不起作用。

有人可以指导如何完成这项任务吗?

当我按照代码中的方式进行操作时,我收到重复条目的错误。

我可以插入初始条目,但是,即使 SongCode 不同,我也会收到重复条目的错误。

    CREATE TABLE Playlists (
      SongCode varchar(400) NOT NULL,
      PlaylistName varchar(400)  NOT NULL,
      UserCode varchar(400) NOT NULL,
      Entry_At datetime(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6)
    );
    ALTER TABLE Playlists
      ADD Primary KEY (UserCode,PlaylistName),
      ADD UNIQUE KEY SongCode_PlaylistName (SongCode,PlaylistName);

样本数据

INSERT INTO Playlists (SongCode, PlaylistName, UserCode) VALUES
        ('0bc4bb05-e8fa-11e9-a21e-86ae283e70f9', 'Test1', '20cbd799-de71-11e9-8269-86ae283e70f7')
INSERT INTO Playlists (SongCode, PlaylistName, UserCode) VALUES
    ('0bc4bb05-e8fa-11e9-a21e-86ae283e70f10', 'Test1', '20cbd799-de71-11e9-8269-86ae283e70f7')
CREATE TABLE Playlists (
  SongCode varchar(400) NOT NULL,
  PlaylistName varchar(400)  NOT NULL,
  UserCode varchar(400) NOT NULL,
  Primary KEY(UserCode,PlaylistName),
  CONSTRAINT SongCode_PlaylistName UNIQUE(SongCode,PlaylistName),
  Entry_At datetime(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6)
);
ALTER TABLE Playlists

尝试这个。

    CREATE TABLE Playlists (
      id INT NOT NULL AUTO_INCREMENT,
      SongCode varchar(400) NOT NULL,
      PlaylistName varchar(400)  NOT NULL,
      UserCode varchar(400) NOT NULL,
      Entry_At datetime(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6),
      PRIMARY KEY (id)
    );
    ALTER TABLE Playlists

如果正确,请检查: https://dbfiddle.uk/?rdbms=mysql_5.7&fiddle=db70a568504cf0b2a27119c4e2f55d77 :D

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM