테이블에 ID 열이 있는지 식별하는 방법
테이블에 아이덴티티 칼럼이 있는지 확인하고 싶습니다.저는 테이블을 모릅니다.저는 테이블 구조를 하지 않았습니다.쿼리 사용?
저는 SQL Server Compact Edition을 사용하고 있습니다.
IF (OBJECTPROPERTY(OBJECT_ID('TABLE_NAME'), 'TableHasIdentity') = 1)
ObjectProperty
sql server 2008부터 사용 가능 참조: ObjectPROPERTY
이 쿼리는 테이블의 ID 열 이름을 반환합니다.
CREATE PROCEDURE dbo.usp_GetIdentity
@schemaname nvarchar(128) = 'dbo'
,@tablename nvarchar(128)
AS
BEGIN
SELECT OBJECT_NAME(OBJECT_ID) AS TABLENAME,
NAME AS COLUMNNAME,
SEED_VALUE,
INCREMENT_VALUE,
LAST_VALUE,
IS_NOT_FOR_REPLICATION
FROM SYS.IDENTITY_COLUMNS
WHERE OBJECT_NAME(OBJECT_ID) = @tablename
AND OBJECT_SCHEMA_NAME(object_id) = @schemaname
END
그런 다음 코드 쪽을 형성합니다.
데이터 리더 역할을 사용하여 이 저장 프로시저를 호출한 다음 확인합니다.datareader.hasrows()
. 조건 값이 참일 경우 (1
), 설정된 경우 테이블에 ID 열이 있습니다.그렇지 않은 경우 ID 열이 없습니다.
오래전 일이지만 도움이 된다는 것을 알았습니다.
시도해 보십시오.
IF EXISTS (SELECT * from syscolumns where id = Object_ID(@TABLE_NAME) and colstat & 1 = 1)
BEGIN
-- Do your things
END
다음 쿼리 중 하나를 사용하여 표에 ID 열이 있는지 확인할 수 있습니다.
1)
SELECT *
FROM sys.identity_columns
WHERE OBJECT_NAME(object_id) = 'TableName'
2)
SELECT *
FROM sys.identity_columns
WHERE object_id = (
SELECT id
FROM sysobjects
WHERE name = 'TableName'
)
가장 간단한 것처럼 이 옵션을 추가하고 싶습니다.
SELECT COLUMNPROPERTY(OBJECT_ID('TableName'),'ColumnName','isidentity')
이를 위한 한 가지 방법은 저장된 절차를 활용하는 것입니다.sp_help
. 즉,
sp_help MyTable
그러면 테이블에 필요한 모든 정보가 있는 DataSet이 반환됩니다.아이덴티티에 대한 정보가 있는 특정 표가 있습니다.
즉,
ID 필드가 없으면 ID 열에 "No identity column defined"(아이덴티티 열이 정의되지 않았습니다)라고 표시됩니다.
@Pranay: 그는 콤팩트 에디션이라고 말했습니다.저장 프로시저는 지원되지 않으며, 시스템도 없습니다.아무거나.
다음은 전화입니다.
SELECT Count(*) FROM INFORMATION_SCHEMA.COLUMNS WHERE AUTOINC_INCREMENT IS NOT NULL AND TABLE_NAME='this_table'
1(참) 또는 0(거짓)을 반환합니다.
... @tblhasIdentColbit = IF(IDENT_CURRENT( @dbName +'.'+ @schemaName +'.'+ @tableName ) IS NOT NULL, 1, 0 )
테이블에 ID가 있는 경우 숫자 값을 얻을 수 있습니다.
이를 실행하는 방법은 매우 간단합니다.
SELECT IDENT_CURRENT('TABLE-NAME')
이것은 존재하는 경우 최대 항등식 열 값을 제공하고, 만약 열이 존재하지 않는 경우에는 결과적으로 1을 제공합니다.
최대값을 기준으로 해당 열이 있는 열을 식별하고 식별 열을 결정할 수 있습니다.
선택한 데이터베이스에서 names, 열 이름, is_identity 또는 not table을 모두 얻을 수 있는 쿼리입니다.
SELECT
sys.columns.name
, sys.tables.name
, is_identity
FROM sys.columns
INNER JOIN sys.tables ON sys.tables.object_id = sys.columns.object_id
AND sys.columns.is_identity = 1
CREATE FUNCTION dbo.fnTableHasIdentity(@Tbl sysname)
RETURNS TINYINT
BEGIN
RETURN OBJECTPROPERTY(OBJECT_ID(@Tbl), 'TableHasIdentity')
END
그렇게 간단해요!
select t.name as TableName,c.name as ColumnName
from sys.identity_columns c
inner join sys.tables t on c.object_id = t.object_id
where t.name = 'TableName'
임의 데이터베이스의 테이블에 대해 이 작업을 수행할 수 있어야 했던 저를 좋아하신다면 다음과 같은 해결책을 찾았습니다.
IF EXISTS (
SELECT 1
FROM [database name].sys.identity_columns AS id_col
INNER JOIN [database name].sys.objects
ON objects.object_id = id_col.object_id
INNER JOIN [database name].sys.schemas
ON schemas.schema_id = objects.schema_id
AND schemas.name = 'schema name'
WHERE OBJECT_NAME(id_col.object_id, DB_ID('database name')) = 'table name'
) SELECT 1 ELSE SELECT 0
현재 테이블에 identityColumn이 있으면 1 또는 0 Boolean Form을 얻을 수 있습니다.
SELECT Count(Column_ID) FROM sys.identity_columns WHERE OBJECT_NAME(object_id) = 'tableName'
한 가지 " 에 을 할 이 을 하는 하는 을 에 이 and o.name='TableName'
입니다. " 트발레 남 이 입니다 입니다 이 .
SELECT o.[Name][TableName],i.[name][IdentityColName] FROM
sys.objects o
left outer join sys.identity_columns i on i.object_id=o.object_id
where o.type='U'
언급URL : https://stackoverflow.com/questions/2871701/how-to-identify-whether-the-table-has-identity-column
'programing' 카테고리의 다른 글
Visual Studio 2010용 OpenCV-2.3 설정 (0) | 2023.09.09 |
---|---|
매버릭스에서 MySQL 서버 시작 문제 (0) | 2023.09.09 |
jQuery AJAX를 통한 JSONP 콜백 기능 (0) | 2023.09.04 |
레이블 너비에 따른 UICollectionView의 동적 셀 너비 (0) | 2023.09.04 |
Mac Excel 2011 VBA에서 Dir() 기능이 작동하지 않음 (0) | 2023.09.04 |