2013-08-22 4 views
4

PRIMARY KEY COLUMN NAME을 가져와야합니다. 지금 내가 어떤 성공없이이테이블의 PRIMARY KEY 열 이름을 얻는 방법

string sql = "SELECT ColumnName = col.column_name" + 
       "FROM information_schema.table_constraints tc" + 
       "INNER JOIN information_schema.key_column_usage col" + 
       "ON col.Constraint_Name = tc.Constraint_Name" + 
         "AND col.Constraint_schema = tc.Constraint_schema" + 
       "WHERE tc.Constraint_Type = 'Primary Key'" + 
         "AND col.Table_name = " +_lstview_item+ ""; 

SqlConnection conn2 = new SqlConnection(cc.connectionString(cmb_dblist.Text)); 
SqlCommand cmd_server2 = new SqlCommand(sql); 
cmd_server2.CommandType = CommandType.Text; 
cmd_server2.Connection = conn2; 
conn2.Open(); 
string ColumnName = (string)cmd_server2.ExecuteScalar();     
conn2.Close(); 

같은 열 이름을 얻는 시도까지

_lstview_item라는 변수에 내 테이블의 이름을 가지고있다. 도움 말 하시겠습니까?

SELECT column_name 
FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE 
WHERE OBJECTPROPERTY(OBJECT_ID(constraint_name), 'IsPrimaryKey') = 1 
AND table_name = 'TableName' 
+1

성공하지 못하셨습니까? 모든 예외 또는 오류 메시지? –

+2

SQL 문에서 따옴표에 문제가 있습니까? –

+0

지정한 SELECT 문에서 PK 열 이름이 올바르게 반환됩니다. 당신이 직면 한 구체적인 이슈는 무엇입니까? –

답변

6

이 쿼리해야합니다 :

+0

PostgreSQL의 버전 : SELECT col.column_name information_schema.table_constraints FROM INNER TC는 col.Constraint_Name = tc.Constraint_Name AND col.Constraint_schema = tc.Constraint_schema ON information_schema.key_column_usage COL 가입 WHERE 하부 (tc.Constraint_Type) = 낮은 ('기본 키') 및 col.Table_name = 'mytable' – kikea

5

이 시도. 테이블 이름에 작은 따옴표가 없습니다. 테스트하고 잘 작동합니다.

string sql = "SELECT ColumnName = col.column_name 
    FROM information_schema.table_constraints tc 
    INNER JOIN information_schema.key_column_usage col 
     ON col.Constraint_Name = tc.Constraint_Name 
    AND col.Constraint_schema = tc.Constraint_schema 
    WHERE tc.Constraint_Type = 'Primary Key' AND col.Table_name = '" + _lstview_item + "'"; 
+0

이것은 Ehsan에 대한 응답을 PostgeSql에 맞게 조정할 수있는 SqlServer에도 해당됩니다. – kikea

관련 문제