Другой способ. Также сохранит ключи.
function array_unique_multidimensional ($ input) {$ serialized = array_map ('serialize', $ input); $ unique = array_unique ($ serialized); return array_intersect_key ($ input, $ unique); }
Что-то вроде этого должно это сделать:
CREATE TABLE MyReferencingTable AS ([ОПРЕДЕЛЕНИЯ КОЛОНКИ] refcol1 INT NOT NULL, rofcol2 INT NOT NULL, CONSTRAINT fk_mrt_ot FOREIGN KEY (refcol1, refcol2) ССЫЛКИ OtherTable (col1, col2)) ENGINE = InnoDB;
В таблице может быть только один первичный ключ. Факт, в котором может состоять более чем из одного поля, не увеличивает количество первичных ключей, есть еще один.
Поскольку часть пары PK не уникальна, вам, очевидно, нужно создать внешний ключ, который ссылается к двум полям: ССЫЛКИ t1 (f1, f2).
Если мы хотим, чтобы логика для внешнего ключа выглядела как это
FOREIGN KEY COmments (issue_id) ССЫЛКИ Ошибки (issue_id) ИЛИ FeatureRequests (issue_id)
Пример:
CREATE TABLE Issues (issue_id int PRIMARY KEY, статус VARCHAR (20)); CREATE TABLE Комментарии (comment_id int PRIMARY KEY, issue_type VARCHAR (20), - «Ошибки» или «FeatureRequests» issue_id BIGINT UNSIGNED NOT NULL, комментарий TEXT); CREATE TABLE Ошибки (issue_id int PRIMARY KEY, серьезность VARCHAR (20), FOREIGN KEY (issue_id) ССЫЛКИ Проблемы (issue_id)); CREATE TABLE FeatureRequests (issue_id int PRIMARY KEY, спонсор VARCHAR (50), FOREIGN KEY (issue_id) ССЫЛКИ Проблемы (issue_id)); INSERT INTO VALUES (1, 'ON'), (2, 'ON'), (3, 'OFF'), (6, 'OFF'), (8, 'ON'); INSERT INTO Комментарии VALUES (1, 'Bugs', 1, 'A'), (2, 'Bugs', 3, 'B'), (3, 'Bugs', 1, 'C'), (4, Bugs ', 3,' D '), (5,' FeatureRequests ', 8,' L '), (6,' FeatureRequests ', 6,' W '), (7,' FeatureRequests ', 1,' ZX ' ); INSERT INTO Bugs VALUES (1, 'severity_1'), (3, 'severity_for_3'); INSERT INTO FeatureRequests VALUES (2, 'sponsor_2 _'), (8, 'sponsor_for_8'), (1, 'sponsor_for_1')
ВЫБОРЫ:
MariaDB [test] & gt; SELECT * FROM Комментарии JOIN FeatureRequests ON Комментарии.issue_i d = FeatureRequests.issue_id AND Comments.issue_type = 'FeatureRequests'; MariaDB [test] & gt; SELECT * FROM Комментарии JOIN Bugs ON Комментарии.issue_id = Bugs.is sue_id AND Comments.issue_type = 'Bugs'; + ------------ + ------------ + ---------- + --------- + - -------- + ---------------- + | comment_id | issue_type | issue_id | Комментарий | issue_id | серьезность | + ------------ + ------------ + ---------- + --------- + - -------- + ---------------- + | 1 | Ошибки | 1 | A | 1 | severity_1 | | 2 | Ошибки | 3 | B | 3 | severity_for_3 | | 3 | Ошибки | 1 | C | 1 | severity_1 | | 4 | Ошибки | 3 | D | 3 | severity_for_3 | + ------------ + ------------ + ---------- + --------- + - -------- + ---------------- + 4 строки в наборе (0.00 сек)