Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi [SQL2k5] Systemkatalog: Default-Werte? (https://www.delphipraxis.net/101539-%5Bsql2k5%5D-systemkatalog-default-werte.html)

Phoenix 15. Okt 2007 08:32

Datenbank: Microsoft SQL Server • Version: 2005 • Zugriff über: SDAC

[SQL2k5] Systemkatalog: Default-Werte?
 
Ich will mittels DDL-Statements die Systemkataloge abfragen, um zur Programmlaufzeit die Struktur der Datenbank zu erfahren.

Nun benötige ich eine Methode, den Default-Wert einer Spalte auszulesen.

Die sys.columns View gibt mir eine Default-Object-Id zurück. Nur: Was mache ich mit der?
Doku der Sys.Columns View im MSDN
Zitat:

Zitat von MSDN
default_object_id
ID des Standardobjekts, unabhängig davon, ob das Objekt ein eigenständiges Objekt vom Typ sys.sp_bindefault ist oder eine DEFAULT-Inlineeinschränkung auf Spaltenebene. Die parent_object_id-Spalte eines DEFAULT-Inlineobjekts ist ein Verweis auf die Tabelle selbst.

0 = Kein Standard.

Im weiteren schweigt sich die Doku jedoch `leider vollkommen darüber aus, was eine Default-Inlineeinschränkung ist, bzw. was ein Default-Inlineobjekt ist und wie man diese Werte von der Datenbank abfragt. Darüber gibt es absolut null informationen, weder im MSDN noch bei Google.

Hat das schonmal jemand gemacht und hat mir da einen Tip?

Phoenix 15. Okt 2007 08:49

Re: [SQL2k5] Systemkatalog: Default-Werte?
 
Ach, verdammich. Hat sich erledigt. Ich hab grad mal raustracen lassen, was der Toad für SQL Server absetzt um das in Erfahrung zu bringen...

SQL-Code:
SELECT
  clmns.name AS [ColumnName],
  (
    select
      case
        when obj.parent_object_id <= 0
        then SCHEMA_NAME(obj.schema_id) + N'.' + obj.name
        else (select defs.definition
              from sys.default_constraints AS defs
              where defs.object_id = obj.object_id)
      end
    from sys.objects as obj
    where obj.object_id = clmns.default_object_id
  ) AS [Defaults]
FROM
  sys.tables AS tbl INNER JOIN sys.all_columns AS clmns ON clmns.object_id = tbl.object_id


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:55 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