2011-11-03 2 views
0

내 머리를 감싸고 있지만 실패했습니다.mysql 테이블의 계단식 업데이트

기본적으로 두 테이블 만 포함하는 데이터베이스를 만들려고합니다. 첫 번째 테이블은 로그인 테이블, 그리고 열이 포함

User ID 
Username 
Password 
First Name 
Last Name 

두 번째 표는 투표 테이블 인을하고, 열이 포함

어쨌든 등을

User ID 
Vote 1 
Vote 2 
Vote 3 

있는가 등

을 사용자 ID를 기본 키로 사용하여 이러한 테이블을 연결하고 업데이트/삭제를 계단식으로 수행 할 수 있으므로 로그인 테이블에 항목을 추가하면 동일한 사용자 ID로 투표 테이블에 항목이 자동으로 만들어집니다. 모든 투표 열에 대한 기본값?

주 테이블에 투표를 추가 할 수는 있지만 모든 사람이 투표를 작성하지는 않으므로 가능한 한 많은 사람들을 분리하고 싶습니다.

많은 감사 EDS는

답변

0

당신은 logins 테이블에 삽입 trigger을 지정할 수 있습니다.

행이 logins 테이블에 삽입 될 때마다 실행됩니다. 트리거에서 수행 할 작업을 지정할 수 있습니다. 이 경우 기본값을 사용하여 login 테이블에 방금 생성 한 ID를 사용하여 vote 테이블에 단일 행을 삽입하는 트리거를 만들 수 있습니다.

그래서 뭔가 같은 :

START TRANSACTION; 

INSERT INTO logins (username, passhash, salt, `first name`, `last name`) 
    VALUES ('$username', SHA2(CONCAT('$salt','$password'),512), '$salt', 
      '$firstname', '$lastname'); 
SELECT @userid:= LAST_INSERT_ID(); 
INSERT INTO votes (userid) VALUES (@userid); 

COMMIT; 

당신이 디폴트 값의 테이블 정의에 설정되어 있는지 확인 : 업데이트를 계단식하려면

CREATE TRIGGER logins_default_vote AFTER INSERT ON logins 
FOR EACH ROW 
INSERT INTO vote (UserID,Vote1,Vote2,Vote3) 
VALUES (NEW.UserId,'vote1 default','vote2 default','vote3 default'); 
+0

감사합니다. 나는 이것을 시도 할 것입니다! – Eds

0

, 당신은 트랜잭션을 사용해야합니다 투표 표.

소금에 절인 해시 암호 사용에 유의하십시오.

+0

고마워, 나는 이것을 시험 할 것이다! – Eds

관련 문제