2017-05-13 7 views
0

정기적으로 프로덕션 데이터베이스 복사본을 가져와 내 개발 데이터베이스를 대체합니다.sql : 전자 메일 필드 앞에 뭔가 추가/추가

그러나 개발 중에 실수로 이메일을 보내지 않았 으면합니다. (자신의 이메일은 users 테이블의 email 컬럼에 저장되어있는) 내가 실수로 이메일을 경우, 그것은 nowhere

로 이동하도록 또한 원래의 경우 좋은 것인지 나는 모든 이메일 주소를 업데이트 할 수있는 방법

이메일은 어떻게 든 가짜 이메일에 삽입됩니다.

+0

당신은 테스트 메일 서버가 느릅 나무 메일을 받아 수행해야한다. 보내지 않았다. – Jens

답변

0

감안할 때 : 이메일 열에는 하나의 이메일 (쉼표 없음, 원숭이 해킹 없음, 숨겨진 명령 - 이메일 만 있음)이 있습니다. 그런 다음 :이 null의 경우

update users set email=email||'.fail'; 

이메일이 null이 마지막에 .fail를 추가, 모든 이메일을 업데이트 할 것, 그러한 유지됩니다. 다시 되돌리려면, 실행 데이터 세트의

update users set email=substring(email,1,length(email)-5) 
    where substring(email from '.....$') = '.fail'; 

예 :

t=# with users(email) as (values('[email protected]'||'.fail'),(null)) 
select substring(email,1,length(email)-5) from users where substring(email from '.....$') = '.fail'; 
    substring 
------------- 
[email protected] 
(1 row)