![]() |
Datenbank: MSSQL • Version: 2005 • Zugriff über: ADO
Insert bei MSSQL und Autoinc
Hallo,
Ich bin etwas am verzeifeln; normalerweise arbeite ich mit MySQL; In diesem kleinen Projekt aber mit MSSQL und da scheint einiges anders zu sein. Ich möchte ein einfaches Insert in Tab1 machen. Das erste Feld der Tab1 ist ein Autoincrement das nicht Null ist laut DB-Einstellungen. Nur sagt er mir dauernd ich darf dem Feld nicht NULL zuweisen, dabei spreche ich das Feld gar nicht an.
Delphi-Quellcode:
Feld1 ist das Autoincrement Feld.
INSERT INTO Tab1 (Feld2, Feld3) Values (:p2, :p3)
Was mache ich da falsch? |
AW: Insert bei MSSQL und Autoinc
AutoInc-Felder dürfen nicht beschrieben werden.
|
AW: Insert bei MSSQL und Autoinc
hallo,
nein das mach ich ja auch nicht; Ich beschreibe Feld 2 und 3 und nicht Feld1 (autoinc). Oder wie meinst du das? |
AW: Insert bei MSSQL und Autoinc
Muss aber beim Insert trotzdem angegeben werden?
SQL-Code:
INSERT INTO Tab1 (Feld1,Feld2, Feld3) Values (NULL, :p2, :p3)
|
AW: Insert bei MSSQL und Autoinc
Zitat:
SQL-Code:
INSERT INTO Tab1 (Feld2, Feld3) Values (:p2, :p3);
|
AW: Insert bei MSSQL und Autoinc
Hat er das nicht so probiert (bis auf den Term)?
Dachte NOT NULL Felder müssen beim Insert angegeben werden und da AUTOINC als Wert NULL? Bin aber auch nicht sicher... |
AW: Insert bei MSSQL und Autoinc
nein NULL darf das autoinc Feld ja nicht haben.
Anscheinend braucht die DB eine Info zähle das Feld1 um eins hoch und schreibe dann den Wert rein. Wobei das kann ja auch nicht sein, oder? |
AW: Insert bei MSSQL und Autoinc
Zitat:
Aber laut mkinzler (der sich mit am besten hier mit SQL auskennt) liege ich nicht ganz richtig mit meiner Vermutung. |
AW: Insert bei MSSQL und Autoinc
hmmm
in mysql geht das so: INSERT INTO Tab1 (Feld2, Feld3) Values (:p2, :p3) Die Frage ist nur warum das in MSSQL nicht tut und wie ich es machen muss. hmmm |
AW: Insert bei MSSQL und Autoinc
Poste mal die Deklaration. Der autoinc scheint nicht anzuspringen.
|
AW: Insert bei MSSQL und Autoinc
der sql ist korrekt und unproblematisch, Du hast wahrscheinlich veröffentlicht Feldkomponenten die Dir hier in die Quere kommen.
Bei MSSQL-Server nie Client-und Serversitige Cursor mischen auf einer Connection, weise der veröffentlichten Feldkomponente mal required:=false zu. |
AW: Insert bei MSSQL und Autoinc
Typ BigInt
Aktiviert sind die Haken Not NULL, eindeutiger Schlüssel, Primärschlüssel. Identität ist nicht aktiviert (ist das richtig so; da steht nämlich was von Erhöhung?!?) |
AW: Insert bei MSSQL und Autoinc
Hall Bummi,
Was meinst du mit Cursor und Feldkomponente? Kannst du mir bitte ein Bsp geben? |
AW: Insert bei MSSQL und Autoinc
Identität ist das Schlüsselwort für Autoincrement
EDIT der Fehler liegt mkinzler schon vermutete in der Datenbank. Du kannst die Oberfläche erst mal vergessen. |
AW: Insert bei MSSQL und Autoinc
hallo,
ich habe das Feld Identität in der DB aktiviert und nun geht es; hoffe nur dass daurch keine neuen Fehler reinkommen. Danke für eure Hilfe und g8 |
AW: Insert bei MSSQL und Autoinc
Wenn Du es als "Autoinc" - Feld vorgesehen hast, nein.
Wie gesagt wenn Du auf der Connection ADODataset mit clientseitiger und serverseitiger CursorLocation mischt bekommts Du die in der Datenbank korrekt erzeugten AutoInc-Werte in Deinem Programm nicht mehr mit. Wenn Du irgendwann ADODatasets mit Oberflächenanbindung (Z.B. DBGrid) verwendest kann es passieren dass ein Post Ärger macht weil die Oberfläche meint daß das AutoInc-Feld nicht leer sein darf, deshalb vorher mein Hinweis, required:=false auf der Feldkomponente. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:10 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz