2014-12-16 1 views
1

한 테이블에서 기본 키를 변경하려고하지만 phalcon이 기본 키를 변경하는 방법을 제공하지 않는 것처럼 보입니다.save()가 기본 키를 변경할 수 없습니다. 버그입니까?

UID이 테이블에 기본 키

+ + ---- ------------ ------------ + + --- --- +
| uid       |   이름             | 타입                 | 년 |
+ ---- + ------------ + ------------ + ------ +
| 1 | Robotina         | 기계식   | 1972 |
| 2 | 아스트로 보이       | 기계 | 1952 |
| 3 | 터미네이터 | 사이보그             | 2029 |
+ + ---- ------------ ------------ + + + ------

$tmp = User::findFirst('uid = 100'); 
$tmp->uid = 900; 
$tmp->rate = 15; 
$result = $tmp->save(); 

이러한 코드 테이블에서 아무 것도 수정할 수 없지만 $ 결과가 인 경우이 반환됩니다. 버그입니까? 기본 키를 수정하는 방법을 제공해야한다고 생각합니다.

답변

2

나는 버그라고 생각하지 않는다. 필자는 Phalcon 개발자가 기본 키를 불변 또는 돌로 만드는 원리에 동의 할 것이라고 생각한다. 다음과 같은 질문을보십시오 : Can we update primary key values of a table?https://softwareengineering.stackexchange.com/questions/8187/should-a-primary-key-be-immutable/

버그가 있다면 Phalcon이 기본 키를 변경하도록 허용 할 수 있습니다.

기본 키를 변경하려는 이유를 아는 것이 도움이 될 수 있습니다. 왜냐하면 어떤 이유로 든 내 머리 꼭대기에서 왜 그렇게하고 싶은지 생각할 수 없기 때문입니다. Robotina가 1, 11 또는 111의 uid를 가지고 있는지 여부에 상관없이 기본 키의 주요 목적 (유일한?)은 테이블의 해당 행을 식별하는 것이고 항목이 고유 한 경우 중요하지 않아야한다고 생각합니다. 테이블의 모든 행에 대해

변경 목적이 리더 보드와 같은 일종의 순위 인 경우 특수 기본 키 필드를 변경하는 것이 더 효율적이므로 순위 필드를 추가하는 것이 좋습니다.

절대적으로 uid를 변경해야한다면, 어떤 데이터베이스를 사용하고 있는지에 따라 데이터베이스 엔진이 무엇이 될지 염두에 두어야한다는 생각이 들더라도 새로운 행을 만들고 삭제할 것입니다. 어쨌든 장면 뒤에서하고 있으며 기본 키 편집의 개념이 많은 사람들의 이빨을 가장 두드러지게 만듭니다.