Announcement

Collapse
No announcement yet.

Doppelte Eintäge verhindern aber NULL zulassen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Doppelte Eintäge verhindern aber NULL zulassen

    Hallo zusammen,
    ich verwende den SQL-Server 2000.
    Wie bekomme ich es hin, dass ich eine Einschränkung für eine Tabellenspalte erstelle, in welcher keine doppelten Einträge sein dürfen aber NULL mehrfach vorkommen kann.
    Mit Unique geht`s nicht....

    Ich habe auch schon nen Versuch mit CHECK gemacht, der aber auch nicht so recht klappt....

    Code:
    CREATE TABLE [dbo].[MeineTabelle] (
    	[MeineSpalte] [NVARCHAR] (8) COLLATE Latin1_General_CI_AS NULL
    --hier lasse ich NULL zu
    GO
    
    ALTER TABLE [dbo].[MeineTabelle] ADD 
    	CONSTRAINT [CK_MeinCheck] CHECK ([MeineSpalte] <> [MeineSpalte])
    --hier möchte ich doppelte Eintäge unterbinden
    --so klappt es aber nicht...
    GO

    Ich glaube aber das die CHECK Methode der richtige Ansatz ist, nur anderst formuliert werden muss...


    Hat jemand eine Idee...?

    Bin für jeden Tipp dankbar

  • #2
    Hallo,

    vielleicht kriegst Du es mit einem Trigger hin.

    Gruß
    docendo discimus

    Comment


    • #3
      Hast du eine Idee wie der aussehen müsste...?

      Comment


      • #4
        unter MS-SQl 2005 kann man das so machen:
        http://entwickler-forum.de/showthrea...927#post159927
        Vielleicht ging das unter Ms-Sql 2000 auch schon

        Comment


        • #5
          OK.
          Ich habe in deinem Link was gefunden....

          Hier mein funktionierendes Ergebnis....

          Code:
          CREATE TABLE [dbo].[MyTable] (
          	[MyID] [int] IDENTITY (1, 1) NOT NULL ,
          	[MyColumn] [nvarchar] (8) COLLATE Latin1_General_CI_AS NULL ,
          	[MyConstraintCoulumn] AS (case when ([MyColumn] is null) then [MyID] end) 
          ) ON [PRIMARY]
          GO
          
          ALTER TABLE [dbo].[MyTable] WITH NOCHECK ADD 
          	CONSTRAINT [MyPK_Table] PRIMARY KEY  CLUSTERED 
          	(
          		[MyID]
          	)  ON [PRIMARY] 
          GO
          
          ALTER TABLE [dbo].[MyTable] ADD 
          	CONSTRAINT [IX_MyTable] UNIQUE  NONCLUSTERED 
          	(
          		[MyColumn],
          		[MyConstraintCoulumn]
          	)  ON [PRIMARY] 
          GO
          
          INSERT MyTable (MyColumn) Values ('1')
          --geht
          INSERT MyTable (MyColumn) Values ('2')
          --geht
          INSERT MyTable (MyColumn) Values (Null)
          --geht
          INSERT MyTable (MyColumn) Values (Null)
          --zweites Mal Null geht
          INSERT MyTable (MyColumn) Values ('1')
          --doppelter Eintag geht nicht

          Comment


          • #6
            Hallo

            Mit der oben erwähnten Calculate-Spalte Methode habe ich es versucht; kriege aber folgenden Fehler:

            Fehlernachricht: Fehler bei INSERT, da die folgenden SET-Optionen falsche Einstellungen aufweisen: 'ARITHABORT'. ....
            In der Dokumentation habe ich dazu folgendes gefunden:
            Beendet eine Abfrage, wenn während der Abfrage ein Überlauffehler oder ein Fehler aufgrund einer Division durch Null auftritt.
            Ein Überlauffehler kann es kaum sein und eine Division durch Null erfolgt auch nicht.

            Kann mir da jemand bitte weiterhelfen? Vielen Dank.

            Comment

            Working...
            X