Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Autoincrement in MS SQL Server (https://www.delphipraxis.net/87901-autoincrement-ms-sql-server.html)

Salomon 7. Mär 2007 07:49

Datenbank: MS SQl Server Express 2005 • Zugriff über: ADO

Autoincrement in MS SQL Server
 
Moin,

ich schreibe gerade ein Script zum Erstellen einer DB auf einem MS SQL Server. In meinem ER-Modell verwende ich für viele Primärschlüssel Felder die automatisch hochzählen sollen. Wie realisiere ich das auf dem MS SQL Server? Autoincrement scheint der nicht zu kennen :( Ich habe hier einige Datentypen gefunden. Etwas in Richtung autoincrement scheint aber nicht dabei zu sein...

Thanx
Marcus

mkinzler 7. Mär 2007 08:00

Re: Autoincrement in MS SQL Server
 
Der Typ heißt COUNTER

NormanNG 7. Mär 2007 08:02

Re: Autoincrement in MS SQL Server
 
Hi,

aus den SBO:
SQL-Code:
CREATE TABLE new_employees
(
 id_num int IDENTITY(1,1), <---- "AutoInc"
 fname varchar (20),
 minit char(1),
 lname varchar(30)
)

Salomon 7. Mär 2007 08:31

Re: Autoincrement in MS SQL Server
 
@mkinzler: COUNTER kennt mein MS SQL Server Express nicht.

@NormanNG: Das scheint zu funktionieren :) Was heißt "(1,1)" hinter IDENTITY? Das immer um 1 incrementiert wird?

Ich verwende für viele Felder die Strings aufnehmen müssen VARCHAR(50). Kann das Feld dann maximal 50 Zeichen aufnehmen, oder expandiert es danach?

Ich habe das mit dem Primärschlussel dann so gemacht:
SQL-Code:
CREATE TABLE "TB_Projects"
(
  "ProjectID"    INT IDENTITY(1,1) NOT NULL PRIMARY KEY,
  "Name"         VARCHAR(50) NOT NULL,
  "Leader"       VARCHAR(50) NOT NULL,
  "Description"  TEXT NOT NULL,
  "StartDate"    DATETIME,
  "PlanedEndDate" DATETIME,
);

NormanNG 7. Mär 2007 08:36

Re: Autoincrement in MS SQL Server
 
Hi,

nochmal aus den SBO:
Zitat:

IDENTITY (Property)
Creates an identity column in a table. This property is used with the CREATE TABLE and ALTER TABLE Transact-SQL statements.



Note The IDENTITY property is not the same as the SQL-DMO Identity property that exposes the row identity property of a column.


Syntax
IDENTITY [ ( seed , increment ) ]

Arguments
seed

Is the value that is used for the very first row loaded into the table.

increment

Is the incremental value that is added to the identity value of the previous row that was loaded.

You must specify both the seed and increment or neither. If neither is specified, the default is (1,1).
Wenn du im Query-Analyzer "identity" eingibst, markierst und Shift-F1 drückst, bekommst du die Erklärungen der SBO - kann aber sein, das das im MS SQL Server Express nicht dabei ist. Sollte aber auch auf den MS-Seiten zu finden sein?


/Edit: ich hatt die Funktion erwischt... hier nun die Property

mkinzler 7. Mär 2007 08:40

Re: Autoincrement in MS SQL Server
 
Zitat:

@mkinzler: COUNTER kennt mein MS SQL
Habe MSSql mit Access verwechselt :oops:
Zitat:

Was heißt "(1,1)" hinter IDENTITY? Das immer um 1 incrementiert wird?
Ja Der erste Wert ist der Startwert, der 2. das Inkrement

Salomon 7. Mär 2007 08:46

Re: Autoincrement in MS SQL Server
 
Ah danke! Wollte eben eigentlich noch fragen was das SBO ist, aber das hat sich damit ja erledigt.

Beim Express Server ist das "Managment Studio Express" dabei. Dort funktioniert Shift + F1 aber auch :)


@mkinzler: Kein Problem ;) Microsoft könnte sich ja auch mal auf eine Syntax einigen :roll:


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:20 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz