반응형
SQL - 업데이트가 있는 경우 그렇지 않은 경우 삽입
제가 하려고 하는 건INSERT
가입자를 등록합니다만,IF EXISTS
그래야 한다UPDATE
열,ELSE INSERT INTO
새 줄
물론 먼저 데이터베이스에 접속해서GET
그$name
,$email
그리고.$birthday
url 문자열에서 가져옵니다.
$con=mysqli_connect("localhost","---","---","---");
// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$name=$_GET['name'];
$email=$_GET['email'];
$birthday=$_GET['birthday'];
이 방법은 작동하지만 새 행만 추가합니다.
mysqli_query($con,"INSERT INTO subs (subs_name, subs_email, subs_birthday)
VALUES ('$name', '$email', '$birthday')");
mysqli_close($con);
내가 시도한 건 이거야.
mysqli_query($con,"INSERT INTO subs (subs_name, subs_email, subs_birthday)
VALUES '$name', '$email', '$birthday'
ON DUPLICATE KEY UPDATE subs_name = VALUES($name), subs_birthday = VALUES($birthday)");
mysqli_close($con);
그리고.
mysqli_query($con,"IF EXISTS (SELECT * FROM subs WHERE subs_email='$email')
UPDATE subs SET subs_name='$name', subs_birthday='$birthday' WHERE subs_email='$email'
ELSE
INSERT INTO subs (subs_name, subs_email, subs_birthday) VALUES ('$name', '$email', '$birthday')");
mysqli_close($con);
그리고.
mysqli_query($con,"IF NOT EXISTS(SELECT * FROM subs WHERE subs_email='$email')
Begin
INSERT INTO subs (subs_name, subs_email, subs_birthday)
VALUES ('$name', '$email', '$birthday')
End");
mysqli_close($con);
근데 아무도 안 먹히는데, 내가 뭘 잘못하고 있는 거지?
아무쪼록 잘 부탁드립니다!
에 대한 제약조건을 만듭니다.
subs_email
컬럼(아직 존재하지 않는 경우):ALTER TABLE subs ADD UNIQUE (subs_email)
사용방법:
INSERT INTO subs (subs_name, subs_email, subs_birthday) VALUES (?, ?, ?) ON DUPLICATE KEY UPDATE subs_name = VALUES(subs_name), subs_birthday = VALUES(subs_birthday)
UPDATE 절의 VALUES(col_name) 함수를 사용하여 INSERT ...의 INSERT 부분의 열 값을 참조할 수 있습니다.중복 키 업데이트 시 - dev.mysql.com
이것을 시험해 보세요.
INSERT INTO `center_course_fee` (`fk_course_id`,`fk_center_code`,`course_fee`) VALUES ('69', '4920153', '6000') ON DUPLICATE KEY UPDATE `course_fee` = '6000';
INSERT ... ON DUPLICATE KEY UPDATE
업데이트를 할 때마다 AUTO_INCREMENT 카운터가 불필요하게 증가하는 것을 개의치 않는 한, 를 사용하는 것이 좋습니다.먼저 INSERT를 시도하기 때문에 자동 카운터가 증가한다는 것을 알게 되었습니다.퍼포먼스는 떨어지지만 유지보수가 용이한 솔루션으로는 다음과 같은 것이 있습니다.
IF EXISTS(SELECT 1 FROM table WHERE column = value...) THEN
UPDATE table
SET column = value ...
WHERE other_column = other_value ...;
ELSE
INSERT INTO table
(column1, column2, ...)
VALUES
(value1, value2, ...);
END IF;
언급URL : https://stackoverflow.com/questions/15383852/sql-if-exists-update-else-insert-into
반응형
'source' 카테고리의 다른 글
Python에서만 datetime 개체를 날짜 문자열로 변환 (0) | 2022.10.29 |
---|---|
어레이의 첫 번째 아이템 삭제(스택에서 팝핑 등) (0) | 2022.10.29 |
Google Map API v3 - 경계 및 중심 설정 (0) | 2022.10.29 |
MariaDB 10.2 Xtrabackup./usr//bin/wsrep_sst_xtrabackup-v2 WSREP_SST_OPT_PORT: 언바인드 변수 (0) | 2022.10.29 |
MySQL "Group By" 및 "Order By" (0) | 2022.10.29 |