@ porneL имеет правильный ответ для этого случая, однако @ Cade Roux и @ noonex также верны: базы данных не предназначены для использования как Excel.
У вас должны быть дополнительные таблицы:
CREATE TABLE ServiceInstance (
ID int(11) unsigned NOT NULL PRIMARY KEY AUTO_INCREMENT,
Hash binary(16) NOT NULL,
ServiceInstanceID varchar(100) NOT NULL,
UNIQUE(Hash)
);
Для каждой таблицы, кроме данных, которые будут уникальными для каждой строки конфигурации.
Когда вы вставляете, делайте:
INSERT INTO ServiceInstance (Hash, ServiceInstanceID) VALUES (unhex(md5('whatever')), 'whatever');
Тогда ваша основная таблица становится:
CREATE TABLE `configuration` (
`Section_ID` int unsigned NOT NULL,
`StoredKey_ID` int unsigned NOT NULL,
`ServiceName_ID` int unsigned NOT NULL,
`ServiceMajorVersion` int unsigned NOT NULL,
`ServiceMinorVersion` int unsigned NOT NULL,
`ServiceInstanceID` int unsigned NOT NULL,
`StoredValue` VARCHAR(1024),
UNIQUE (`Section_ID`, `StoredKey_ID`, `ServiceName_ID`, `ServiceMajorVersion`, `ServiceMinorVersion`, `ServiceInstanceID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
Вместо этого используйте ключ UNIQUE, так как ПЕРВИЧНЫЕ КЛЮЧИ обычно используются, когда вы всегда будете получать доступ к строкам по первичному ключу. Если это просто ограничение, используйте UNIQUE.