Hi,
Aber Unique-Indizes über mehrere Spalten werden wohl zulässig sein? Die kann man auch ganz normal benutzen ohne das sie implizit durch einen Primärschlüssel erstellt werden.
interessanter Ansatz Indizes fuer Einstellungen auf Datensatzebene zu nutzen.
Ich habe mal mit M$ SQL Server folgende Tabelle (incl. PK einem Defaultwert und dem von Dir vorgeschlagenenen Index) erstellt:
-- die Test-Tabelle
CREATE TABLE [dbo].[Tests] (
[Test_GUID] [uniqueidentifier] NOT NULL ,
[Test_GUID_1] [uniqueidentifier] NOT NULL ,
[Test_GUID_2] [uniqueidentifier] NOT NULL
) ON [PRIMARY]
GO
-- der PK
ALTER TABLE [dbo].[Tests] WITH NOCHECK ADD
CONSTRAINT [PK_Tests] PRIMARY KEY CLUSTERED
(
[Test_GUID]
) ON [PRIMARY]
GO
-- der Defaultwert fuer den PK und der kombinierte unique Index
ALTER TABLE [dbo].[Tests] WITH NOCHECK ADD
CONSTRAINT [DF_Tests_Test_GUID] DEFAULT (newid()) FOR [Test_GUID],
CONSTRAINT [IX_Tests] UNIQUE NONCLUSTERED
(
[Test_GUID_1],
[Test_GUID_2]
) ON [PRIMARY]
GO
Dann fuehrt beispielsweise ein wiederholtes
insert
tests
(
Test_GUID,
test_guid_1,
test_guid_2
)
values
(
newid(),
'{137477E5-1591-4279-9962-4E20E25E2EAA}',
'{CBC12F5B-A556-462D-8B7F-1F6DC29DFE8F}'
)
zur Fehlermeldung:
Server: Nachr.-Nr. 2627, Schweregrad 14, Status 2, Zeile 1
Verletzung der UNIQUE KEY-Einschränkung 'IX_Tests'. Ein doppelter Schlüssel kann in das Tests-Objekt nicht eingefügt werden.
Die Anweisung wurde beendet.
Ist das ueblich Indizes auf diese Art und Weise zu nutzen? Ist das OK es zu tun?
Gruss,
Ludger