2016-07-25 19 views
1

Ich versuche, einen Bildschirm für meine Datenbank zum Einfügen, Hochladen, Löschen und Anzeigen zu erstellen. Hier, wie es aussieht.sql netezza vor dem Einfügen überprüfen

enter image description here

Ich verwende Netezza Datenbanksystem und den Erhalt meiner Tabelle aus ODBC. Zuerst habe ich eine Formularanwendung in Visual Studio erstellt. Dann fügte ich meinem Formular datagrid hinzu. Dank datagridview habe ich meine Datenquelle aus dem Icon hinzugefügt, indem ich einfach darauf geklickt habe und meine Tabelle daraus ausgewählt habe. Es brachte mir automatisch einen Tisch, als ich das tat.

Hier ist der Code ist es erzeugt wird, für mich mich

Tabelle zu zeigen

this.sPSS_STREAM_INFOTableAdapter.Fill(this.dataSet1.SPSS_STREAM_INFO);

Dann bemerkte ich, dass es auch Methoden einfügen und aktualisieren erzeugen könnte oder ich konnte sie überlasten. Allerdings hat es eine andere Syntax als ich in Netezza weiß. Ich konnte die Einfügemethode so durchführen.

INSERT INTO "ADMIN"."SPSS_STREAM_INFO" ("IS_AKIS_NO", "IS_AKIS_AD", "IS_AKIS_ACKLM", "PROJE_ADI", "YZLM_OP_ID", "TEST_OP_ID", "KGG_OP_ID") VALUES (?, ?, ?, ?, ?, ?, ?)

Also, ich bin durch das Ausfüllen alle Spalten eingefügt werden können, aber natürlich muss ich etwas schreiben, um IS_AKIS_NO, weil es wie Primärschlüssel in meinem Tisch verhält sich auch dort ist kein Primärschlüssel in Netezza aber es tut verhindere nicht, dass ich die gleiche IS_AKIS_NO Nummer hier hinzufüge, weil ich in Netezza keine Einschränkung habe. Wie kann ich den SQL-Code eingeben, um zu prüfen, ob der Wert in meiner ersten Spalte bereits vorhanden ist, bevor ich ihn einfüge?

Antwort

0

Wenn Ihr ID-Feld IS_AKIS_NO ein automatisch inkrementierender Wert ist, können Sie ein sequence erstellen, um Ihr Problem zu lösen.

Create a Sequence

CREATE SEQUENCE IS_AKIS_NOseq as integer 
START WITH 1 increment by 1 
minvalue 1 maxvalue 100000000 no cycle 

Rufen Sie den nächsten Wert aus dem sequence

select NEXT VALUE FOR IS_AKIS_NOseq