tutorials.de Buch-Aktion 02/2012
Like Tree1Danke
  • 1 Beitrag von Bernd1984
ERLEDIGT
JA
ANTWORTEN
4
ZUGRIFFE
1025
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    bejay bejay ist offline Mitglied Bronze
    Registriert seit
    Jun 2010
    Beiträge
    25
    Hallo,
    für mein jetziges Problem gibt es bestimmt einige Lösungswege.
    Ich habe eine Tabelle die eine Spalte mit einem fortlaufenden Zählerwert(int), derzeit NULL, enthält. Der Anfangswert soll 153 sein, dann aufsteigend.
    Kann man das mit SQL oder TSQL oder im Management Studio überhaupt lösen?

    Gruß
    bejay
     

  2. #2
    Avatar von Alex F.
    Alex F. Alex F. ist offline Mitglied Smaragd
    Registriert seit
    Jul 2004
    Beiträge
    1.034
    Ja, kann man :
    Wenn du in den Eigenschaften des Tabellenfeldes die Eigenschaft (istIdentity) auf true stellst schalten sich die eigenschaften ID-Ausgangswert und ID-Inkrement frei - Die Eigenschaft findest du unter Identitätsspezifikation.

    GGF musst du die Tabelle erst umkopieren. Hierbei gibt es noch die Möglichkeit mit Identity Insert on

    LG Alex
     
    Don't get set into one form, adapt it and build your own, and let it grow, be like water. .... Now, water can flow or it can crash. Be water, my friend.

  3. #3
    Avatar von Bernd1984
    Bernd1984 Bernd1984 ist offline Kastenbrot
    Registriert seit
    Oct 2004
    Beiträge
    414
    Hallo bejay,

    am einfachsten ist es im Management Studio.

    Dazu wählst du die Tabelle aus und rufst im Kontextmenü "Entwerfen" auf.
    Dann die Spalte markieren und in den Spalteneigenschaften den Eintrag "Identifikationsspezifikation" auswählen und auf Ja ändern. Danach kannst du Schrittweite und Startwert angeben.

    Ein Eintrag bei CREATE TABLE sieht dann so aus
    Code :
    1
    
    Feldname int NOT NULL IDENTITY (153, 1)
    bejay bedankt sich. 
    Gruss Bernd
    Zitat Zitat von mAu
    * Unformatierten Quellcode schaue ich mir _nicht_ an!
    * Sollte ich euch bei einer Frage weitergeholfen haben, würde ich mich über eine positive Bewertung freuen.
    * Bitte die Netiquette beachten.
    * Vergesst nicht, beantwortete Fragen als erledigt zu markieren!

  4. #4
    bejay bejay ist offline Mitglied Bronze
    Registriert seit
    Jun 2010
    Beiträge
    25
    Hallo Bernd,
    wenn ich das nächste mal so etwas mache, merke ich mir deinen Tipp, aber jetzt habe ich mich nicht präzise ausgedrückt. Die Tabelle enthält bereits Datensätze nur die Spalte ist NULL und es sieht so aus, dass man dann die ID Spec nicht mehr ändern kann. Mittlerweile habe ich folgendes gemacht: Ich habe die Tab von meinem angebundenen AccessADP in meine hilfsAccess.mdb exportiert. Dort eine AutoWert Spalte hinzugefügt, ein Update AutoWert+152 auf meine Spalte hlpZaehler gemacht, die nicht benötigten Felder entfernt und die Tabelle als hlpTab wieder ins AccessADP exportiert. Jetzt fehlt mir die richtige Syntax um die Spalte UrTabelle.Zähler mit den Werten aus hlpTab.hlpZaehler zu füllen. Bin erst Anfänger in (T)SQL.
    Grüße
    bejay
     

  5. #5
    Avatar von Bernd1984
    Bernd1984 Bernd1984 ist offline Kastenbrot
    Registriert seit
    Oct 2004
    Beiträge
    414
    Hallo bejay,

    ich hab zwar "nur" MSSQL2005, doch das sollte auch bei MSSQL2008 gehen.

    Bei dem Eintrag "Identifikationsspezifikation" auf das + drücken und dann kannst du den Wert von "Ist Identity" auf Ja ändern und danach sind auch Schrittweite und Startwert editierbar.

    Es geht auch mit TSQL - temporäre Tabelle erstellen, Daten einfügen, alte Tabelle löschen und temporäre Tabelle umbenennen.
    Code sql:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    
    BEGIN TRANSACTION
    GO
    CREATE TABLE dbo.Tmp_Testtabelle
        (
        Feld1 INT NOT NULL IDENTITY (153, 1),
        Feld2 datetime NOT NULL,
        Feld3 nvarchar(50) NOT NULL
        )  ON [PRIMARY]
    GO
    SET IDENTITY_INSERT dbo.Tmp_Testtabelle ON
    GO
    IF EXISTS(SELECT * FROM dbo.Testtabelle)
         EXEC('INSERT INTO dbo.Tmp_Testtabelle (Feld1, Feld2, Feld3)
            SELECT Feld1, Feld2, Feld3 FROM dbo.Testtabelle WITH (HOLDLOCK TABLOCKX)')
    GO
    SET IDENTITY_INSERT dbo.Tmp_Testtabelle OFF
    GO
    DROP TABLE dbo.Testtabelle
    GO
    EXECUTE sp_rename N'dbo.Tmp_Testtabelle', N'Testtabelle', 'OBJECT' 
    GO
    COMMIT
     
    Gruss Bernd
    Zitat Zitat von mAu
    * Unformatierten Quellcode schaue ich mir _nicht_ an!
    * Sollte ich euch bei einer Frage weitergeholfen haben, würde ich mich über eine positive Bewertung freuen.
    * Bitte die Netiquette beachten.
    * Vergesst nicht, beantwortete Fragen als erledigt zu markieren!

Ähnliche Themen

  1. MSSQL 2008 SQL SERVER MANAGEMENT STUDIO falsche Syntax bei RESTORE
    Von bejay im Forum Relationale Datenbanksysteme
    Antworten: 2
    Letzter Beitrag: 20.09.10, 16:49
  2. MSSQL 2008 und Access00 ADP ADO Deklaration
    Von bejay im Forum Relationale Datenbanksysteme
    Antworten: 1
    Letzter Beitrag: 10.07.10, 00:28
  3. MSSQL 2008 - Frage zu bcp
    Von bejay im Forum Relationale Datenbanksysteme
    Antworten: 0
    Letzter Beitrag: 01.07.10, 09:32
  4. MsSQL 2008
    Von bejay im Forum Relationale Datenbanksysteme
    Antworten: 2
    Letzter Beitrag: 30.06.10, 10:24
  5. Recordset in eine vorhandene Excel Tabelle
    Von faltencreme im Forum Visual Basic 6.0
    Antworten: 1
    Letzter Beitrag: 06.11.03, 11:20