[com_code] 목록 입니다[고정 리스트]
c0001
c0002
c0003
c0004
c0005
c0006
c0009
c0010
[role_id] 목록 입니다[고정 리스트]
admin
root
user
[page_id] 목록 입니다
B569
B896
B897
B898
B899
B865
B861
B900
이걸 대충
insert into Auth_Role_Page ([com_code] ,[role_id] ,[page_id]) values('c0009','admin','B569')
insert into Auth_Role_Page ([com_code] ,[role_id] ,[page_id]) values('c0009','admin','B896')
insert into Auth_Role_Page ([com_code] ,[role_id] ,[page_id]) values('c0009','admin','B897')
insert into Auth_Role_Page ([com_code] ,[role_id] ,[page_id]) values('c0009','root','B569')
insert into Auth_Role_Page ([com_code] ,[role_id] ,[page_id]) values('c0009','root','B896')
insert into Auth_Role_Page ([com_code] ,[role_id] ,[page_id]) values('c0009','root','B897')
insert into Auth_Role_Page ([com_code] ,[role_id] ,[page_id]) values('c0009','user','B569')
insert into Auth_Role_Page ([com_code] ,[role_id] ,[page_id]) values('c0009','user','B896')
insert into Auth_Role_Page ([com_code] ,[role_id] ,[page_id]) values('c0009','user','B897')
으로 일일이 입력하는 미친짓 ㅜㅜ 을 하고 있는데
이 반복 작업을 줄이는 방법 있나요?
아참 이미 있는 데이터는 중복해서 들어가면 안되요;;
기존 설계자가 개판으로 구성해놔서 그런지 막 중복해서 들어가고 그러더라구요 ㅜ
원래 저 세개 열은 키로 지정해서 중복 안되게 해야하는데 2005버전은 어떻게 하는지 모르겠구 ㅜ
Comment 5
-
폭주
2014.10.22 18:21
-
park87
2014.10.22 18:26
정말 감사합니다
그런데 이미 중복 입력된 데이터때문에 유니크화 시킬수가 없는데...
이건 어떻게 처리해야할지..
-
폭주
2014.10.22 18:40
중복된 내역을 삭제 해야 하는데 특별한 키가 없이 현재 있는 테이블 구조라면
SELECT DISTINCT *
into #tmp
FROM Auth_Role_Page
임시테이블에 중복 제외하고 입력 한후
기존 테이블 지우고 임시테이블 내역 입력 해주시면 됩니다.
-
park87
2014.10.23 08:13
SELECT [role_page_idx] pk 자동증가인덱스 번호, 그냥 들어간 순서대로,[com_code] 회사 번호,[role_id] fk 권한등급,[page_id] fk 메뉴번호,[reg_date],[reg_userid],[pop]FROM [tjm_edms].[dbo].[Auth_Role_Page][메뉴별 권한을 설정하는 테이블...이런식의 테이블은 진짜 첨보네요..일반유저는 보게하면서 관리자는 못보게 할수 있는 개념의 테이블;;]실제 테이블은 이렇게 되있는데fk는 중복 처리를 안하나요?insert 사용할때 중복해서 막 들어가네요;;role_id,page_id,com_code요 세개가 합쳐서 중복되면 안되는데중복 안되는줄 알았다가 막 중복되 들어가서 난감해요;; -
park87
2014.10.23 09:23
2005 버전에서
INSERT INTO #tblRoleId
( Role_Id )
VALUES ( N'admin' ),
( N'root' ),
( N'user' )안먹혀요오오오
아아아아 왜 2005버전은 ㅜㅜ
CREATE TABLE #tblComCode
(
com_code NVARCHAR(5)
)
GO
CREATE TABLE #tblRoleId
(
Role_Id NVARCHAR(20)
)
GO
CREATE TABLE #tblPageId
(
Page_Id NVARCHAR(4)
)
GO
CREATE TABLE #Auth_Role_Page
(
com_code NVARCHAR(5),
role_id NVARCHAR(20),
page_id NVARCHAR(4)
)
GO
INSERT INTO #tblComCode
( com_code )
VALUES ( N'C001' ),
( N'C002' ),
( N'C003' ),
( N'C004' ),
( N'C005' ),
( N'C006' ),
( N'C007' ),
( N'C008' ),
( N'C009' ),
( N'C010' )
GO
INSERT INTO #tblRoleId
( Role_Id )
VALUES ( N'admin' ),
( N'root' ),
( N'user' )
GO
INSERT INTO #tblPageId
( Page_Id )
VALUES ( N'B569' ),
( N'B896' ),
( N'B897' ),
( N'B898' ),
( N'B899' ),
( N'B865' ),
( N'B861' ),
( N'B900' )
GO
INSERT INTO #Auth_Role_Page
( com_code, role_id, page_id )
SELECT A.com_code,B.Role_Id,C.Page_Id
FROM #tblComCode A
CROSS APPLY #tblRoleId B
CROSS APPLY #tblPageId C
ORDER BY A.com_code,B.Role_Id,C.Page_Id
SELECT * FROM #Auth_Role_Page
--------------------------------------------------------
대충 이런걸 원하시는건가요?
중복 안되게 하실려면 위 키를 유니크로 하시던가 기본키로 잡으세요.