uid가 pk값인데 수정하는 방법이 있나요?? pk를 풀지 않고 수정하는 방법이 있나요?
update table set uid=2059057 where uid =4698980
Comment 2
-
초짜해커
2015.06.04 09:31
-
한태
2016.02.15 20:30
PK제약이 걸려있더라도 중복되는 값이 아니라면 업데이트가 실행됩니다.
혹시 다른 테이블에 FK가 걸려있어서 PK가 업데이트 되지 않는다면 FK 제약을 지우고 다음 옵션과 함께 FK제약을 다시 생성해주시면 됩니다. 아래 옵션을 이용하면 부모테이블에서 delete, update 변경이 일어나면 참조 테이블에도 변경이 반영됩니다.
ALTER TABLE 테이블명 with check
ADD CONSTRAINT 제약이름 foreign KEY (컬럼명)
REFERENCES 테이블명 (컬럼명)
ON DELETE CASCADE
ON UPDATE CASCADE;
참고로 FK 컬럼 값을 update 하고 싶다면
1) ALTER TABLE 테이블명 NOCHECK CONSTRAINT 제약명
2) 업데이트
3) ALTER TABLE 테이블명 CHECK CONSTRAINT 제약명
순으로 실행시 FK 컬럼 값을 PK값과 상관없이 update 할 수 있습니다.
PK라고 해서 UPDATE 할 수 없는 것은 아닙니다. 다만 UNIQUE하지 않은 값으로는 안되겠죠.
그럴려면 PK를 풀고 UPDATE해야 하고
그러고 나면 PK로 다시 만들지 못합니다.
만약 UID가 IDENTITY 컬럼이라면 PK나 UNIQUE와 관계없이 UPDATE 할 수 없습니다.
[여기]를 참고하세요.