Создание первичных ключей или уникальных ключей - PullRequest
0 голосов
/ 08 октября 2019

Я пытаюсь создать таблицу с именем плейлистов.

Пользователь не может создать плейлист с одним и тем же именем более одного раза, и одну и ту же песню нельзя добавить в плейлист более одного раза.

Я пытался создать составной ключ, но он не работал.

Может кто-нибудь подсказать, как выполнить эту задачу?

Когда я сделал так, как он есть вкод, я получаю ошибки для дублированных записей.

Я могу вставить исходную запись, однако я получаю ошибки для дублированных записей, даже если 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')

Ответы [ 2 ]

1 голос
/ 08 октября 2019
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

попробуйте это.

0 голосов
/ 09 октября 2019
    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

...