2010-09-29 34 views
19

Làm cách nào để tìm giá trị mặc định của cột trong bảng bằng truy vấn SQL?Máy chủ SQL: Tìm giá trị mặc định của cột có truy vấn

Bằng việc sử dụng thủ tục này được lưu trữ:

sp_columns @tablename 

tôi nhận được một số thông tin trên các cột của một bảng cụ thể nhưng giá trị mặc định của cột là mất tích, Làm thế nào tôi có thể nhận được nó?

Trả lời

48

Bạn có thể tìm định nghĩa lưu trữ với bên dưới (nhớ để điều chỉnh tên cột và bảng để tìm được những người có liên quan đến môi trường của bạn!)

SELECT object_definition(default_object_id) AS definition 
FROM sys.columns 
WHERE name  ='colname' 
AND object_id = object_id('dbo.tablename') 
+1

Điều này sẽ không trả lại gì cho tôi trên máy chủ sql 2008 ... và tôi biết thực tế là lược đồ của tôi tên ema/table/field là đúng, và thực sự là một mặc định. – Amalgovinus

+0

@Amalgovinus nó chắc chắn hoạt động. Bạn đang chạy nó trong bối cảnh cơ sở dữ liệu phải không? Tài khoản bạn đang chạy truy vấn có đủ quyền để xem định nghĩa không? –

+0

Vâng, tôi không có quyền. Trong những trường hợp khác Mssql là "tốt", đủ để nói với bạn rằng bạn không thể truy cập những thứ như sysobjects, v.v., nhưng trong trường hợp này nó chỉ giả vờ như thể không có gì để hiển thị nếu bạn không sử dụng cơ sở dữ liệu mà bạn có quyền . Tôi đã phải thiết lập một cơ sở dữ liệu mặc định để làm việc này. http://stackoverflow.com/questions/362434/how-can-i-change-my-default-database-in-sql-server-without-using-ms-sql-server-m – Amalgovinus

14

Sử dụng:

SELECT so.name AS table_name, 
      sc.name AS column_name, 
      sm.text AS default_value 
    FROM sys.sysobjects so 
    JOIN sys.syscolumns sc ON sc.id = so.id 
LEFT JOIN sys.syscomments sm ON sm.id = sc.cdefault 
    WHERE so.xtype = 'U' 
     AND so.name = @yourtable 
ORDER BY so.[name], sc.colid 
7

tôi sử dụng INFORMATION_SCHEMA:

SELECT TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME, COLUMN_DEFAULT 
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE TABLE_SCHEMA = @SchemaName 
    AND TABLE_NAME = @TableName 
    AND COLUMN_NAME = @ColumnName 
Các vấn đề liên quan