Как обеспечить уникальность имен папок в иерархической таблице SQL, если родительский столбец имеет значение NULL?MySql

Форум по Mysql
Ответить
Anonymous
 Как обеспечить уникальность имен папок в иерархической таблице SQL, если родительский столбец имеет значение NULL?

Сообщение Anonymous »

Я пытаюсь создать таблицу в MySQL для хранения иерархии файлов. В этой таблице столбец родительской_папки_id будет содержать ссылку на идентификатор родительской папки. Если у папки нет родительского элемента, значение этого столбца будет NULL, что означает, что папка является корневой. У каждого пользователя может быть только одна папка с уникальным именем.

Код: Выделить всё

CREATE TABLE folders (
id INT NOT NULL AUTO_INCREMENT,
user_id INT NOT NULL,
parent_folder_id INT DEFAULT NULL,
folder_name VARCHAR(255) NOT NULL,

PRIMARY KEY (id),

FOREIGN KEY (user_id) REFERENCES users(id),
FOREIGN KEY (parent_folder_id) REFERENCES folders(id),

CONSTRAINT uq_user_folder_name UNIQUE KEY (user_id, parent_folder_id, folder_name)
);
Проблема возникает, когда родительская_папка_id имеет значение NULL. В этом случае MySQL не выполняет сравнение должным образом, и у пользователя может быть бесконечное количество корневых папок. Как этого избежать?

Подробнее здесь: https://stackoverflow.com/questions/798 ... table-if-t
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «MySql»