| 

.NET C# Java Javascript Exception

3
Hey Leute,
Ich such jetz schon ne ganze weile, aber komm ihrgendwie nich so richtig drauf...
wie kann ich herausfinden, welche spalte in einer tabelle ein prmärschlüssel und/oder autowert ist...?

ich hab "SELECT @@IDENTITY" gefunden, blick aber nich so richtig, was es macht... ich bekomm da immer ne "0" zurück egal was ich mache... -.-
08.09.2011
DerPunk 1,2k 1 7
3 Antworten
1
Beim SQL-Server kann der Primarykey per stored procedure ermittelt werden:
exec sp_pkeys myTable

"SELECT @@IDENTITY" macht etwas ganz anderes:
@@IDENTITY (Transact-SQL)
After an INSERT, SELECT INTO, or bulk copy statement is completed, @@IDENTITY contains the last identity value that is generated by the statement.
08.09.2011
Jürgen Luhr 7,1k 1 9
hab "exec sp_pkeys" grad ausprobiert und muss sagen, das is genau die lösung die ich für mssql gebraucht hab, danke...
haste da vlt für Oracle auch ne lösung? da läuft das ganze ja über trigger...
DerPunk 08.09.2011
Leider habe ich von Oracle keine Ahnung. Sorry.
Jürgen Luhr 08.09.2011
Der Oracle Trigger holt sich den Wert wohl aus einer Sequence. Und den Wert der Sequence kannst abfragen. Beispiel: Deine Sequence heisst "blabla": blabla.currval. das geht auch in sql statements ausserhalb des triggers.
nabuchodonossor 09.09.2011
1
Hi,

ob und wenn ja welche Spalte in einer Tabelle einen Primärschlüssel, etc... darstellt, ist sogenannte Metainformation. Dafür existiert z.B. beim MSSQL Server das INFORMATION_SCHEMA (ich glaub bei MySql heißt das genauso, mag sein, dass sich Tabellen-Schemata unterschieden).
Schaus Dir einfach an, ist halb so wild.

Viel Erfolg,
Florian
08.09.2011
ffordermaier 8,4k 3 9
bei mssql, mysql und oracl sollte sich das als nicht so schwierig erweisen diese auszulesen, aber access verhindert externen zugriff auf seine systemtabellen...
DerPunk 08.09.2011
1
Oracle-Defaultwert für eine Spalte:
SELECT data_default
FROM user_tab_columns
WHERE table_name = 'QWERTZ'
AND column_name = 'ASDFG';

Wenns statt dm Defaultwert eine Sequence ist (wie bei PK-Spalten oft), dann kann die durch einen Trigger (Eventgesteuertes PL/SQL-Programm) gefüllt werden. Um sich den anzusehen, empfehle ich den kostenlosen SQL-Developer von Oracle.

Oracle-Indexspalten:
SELECT *
FROM user_ind_columns
WHERE table_name = 'QWERTZUIOP';

Oracle-Primary Keys:
SELECT constraint_name, index_name
FROM user_constraints
WHERE table_name = 'QWERTZUIOP'
AND constraint_type = 'P';

Mit dem so gelieferten Indexnamen kann man dann wieder in user_ind_columns nachsehen, welche Spalten dazugehören.

Commit;
Cornel
19.10.2011
6502 21 1

Stelle deine .net-Frage jetzt!
TOP TECHNOLOGIES CONSULTING GmbH