PL/SQL의 기존 테이블에 열을 추가하기 전에 열이 있는지 확인하는 방법은 무엇입니까?
Oracle DB 테이블에 열을 추가하기 전에 간단한 검사를 추가하려면 어떻게 해야 합니까?열을 추가하는 데 사용하는 SQL을 포함했습니다.
ALTER TABLE db.tablename
ADD columnname NVARCHAR2(30);
Oracle Database의 열에 대한 모든 메타데이터는 다음 보기 중 하나를 사용하여 액세스할 수 있습니다.
user_tab_cols; -- 사용자가 소유한 모든 테이블에 대해
all_tab_cols; - 사용자가 액세스할 수 있는 모든 테이블
dba_tab_cols; -- 데이터베이스 내의 모든 테이블.
SCORT에서 ADD_TMS와 같은 컬럼을 찾고 있다면.EMP 테이블과 컬럼이 존재하지 않는 경우에만 이 컬럼을 추가합니다.PL/SQL 코드는 다음 행을 따릅니다.
DECLARE
v_column_exists number := 0;
BEGIN
Select count(*) into v_column_exists
from user_tab_cols
where upper(column_name) = 'ADD_TMS'
and upper(table_name) = 'EMP';
--and owner = 'SCOTT --*might be required if you are using all/dba views
if (v_column_exists = 0) then
execute immediate 'alter table emp add (ADD_TMS date)';
end if;
end;
/
(순서의 일부가 아닌) 스크립트로 실행할 예정이라면 스크립트에 alter 명령을 포함하여 스크립트의 시작 엔드가 없는 경우 스크립트의 마지막에 오류를 표시하는 것이 가장 쉬운 방법입니다.
file1이 있는 경우.sql
alter table t1 add col1 date;
alter table t1 add col2 date;
alter table t1 add col3 date;
또한 col2가 존재하며 스크립트가 실행되면 나머지 2개의 열이 테이블에 추가되고 로그에 "col2"가 이미 존재하므로 문제가 없습니다.
또는 다음 오류를 무시할 수 있습니다.
declare
column_exists exception;
pragma exception_init (column_exists , -01430);
begin
execute immediate 'ALTER TABLE db.tablename ADD columnname NVARCHAR2(30)';
exception when column_exists then null;
end;
/
일반적으로 ANSI-92 표준 메타 테이블을 사용해 보는 것이 좋습니다만, Oracle에서는 지원되지 않는 것을 알 수 있습니다.
-- this works against most any other database
SELECT
*
FROM
INFORMATION_SCHEMA.COLUMNS C
INNER JOIN
INFORMATION_SCHEMA.TABLES T
ON T.TABLE_NAME = C.TABLE_NAME
WHERE
C.COLUMN_NAME = 'columnname'
AND T.TABLE_NAME = 'tablename'
그 대신 뭔가 해야 할 것 같아요.
-- Oracle specific table/column query
SELECT
*
FROM
ALL_TAB_COLUMNS
WHERE
TABLE_NAME = 'tablename'
AND COLUMN_NAME = 'columnname'
상기 내용을 검증할 Oracle 인스턴스가 없는 점 사과드립니다.만약 안되면 연락주세요.이 게시물을 삭제하겠습니다.
열이 있는지 확인하는 방법
select column_name as found
from user_tab_cols
where table_name = '__TABLE_NAME__'
and column_name = '__COLUMN_NAME__'
언급URL : https://stackoverflow.com/questions/6351823/how-to-check-if-a-column-exists-before-adding-it-to-an-existing-table-in-pl-sql
'source' 카테고리의 다른 글
Jest를 사용한 새로운 리액트라우터 후크를 사용한history.push의 모의 방법 (0) | 2023.04.02 |
---|---|
Angular 4 HttpClient 쿼리 파라미터 (0) | 2023.04.02 |
템플릿 내에서 WordPress 단축코드를 호출하려면 어떻게 해야 합니까? (0) | 2023.04.02 |
내부 페이지 워드프레스 링크 (0) | 2023.04.02 |
Angular에서 '바꾸기' 속성이 더 이상 사용되지 않는 이유는 무엇입니까?JS 디렉티브? (0) | 2023.04.02 |