Как обеспечить уникальность имен папок в иерархической таблице 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

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