테이블에 ID 열이 있는지 식별하는 방법
테이블에 아이덴티티 칼럼이 있는지 확인하고 싶습니다.저는 테이블을 모릅니다.저는 테이블 구조를 하지 않았습니다.쿼리 사용?
저는 SQL Server Compact Edition을 사용하고 있습니다.
IF (OBJECTPROPERTY(OBJECT_ID('TABLE_NAME'), 'TableHasIdentity') = 1)
ObjectPropertysql 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 |