반응형
절차를 사용하여 열의 기본값을 변경하는 방법
현재 SQL은 다음과 같습니다.
DELIMITER $$
CREATE PROCEDURE updateDefaultUserRole(
IN rid_in INT
) BEGIN
ALTER TABLE _users
MODIFY rid INT(255) NOT NULL DEFAULT rid_in; -- Modify the columns default value
UPDATE _users SET rid = rid_in WHERE rid < rid_in; -- Update all entries lower than the role ID.
END $$
DELIMITER ;
데이터베이스 _users 테이블은 다음과 같습니다.
CREATE TABLE `_users` (
`uid` int(255) NOT NULL,
`forname` varchar(40) NOT NULL,
`surname` varchar(40) NOT NULL,
`email` varchar(120) NOT NULL,
`hash` varchar(60) NOT NULL,
`created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`rid` int(255) NOT NULL DEFAULT '2'
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
ALTER TABLE `_users`
ADD PRIMARY KEY (`uid`),
ADD KEY `rid` (`rid`);
MODIFY `uid` int(255) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2;
이 에러가 발생하고 있습니다.
SQL 구문에 오류가 있습니다. MariaDB 서버 버전에 해당하는 설명서에서 'rid_in;' 근처에서 사용할 올바른 구문을 확인하십시오. -- 열의 기본값을 수정합니다.
다음 행에 대한 링크:
ALTER TABLE _users
MODIFY rid INT(255) NOT NULL DEFAULT rid_in;
이것을 변경하면,rid_in
값:
ALTER TABLE _users
MODIFY rid INT(255) NOT NULL DEFAULT '1';
정상적으로 동작합니다만, 어떻게 하면,rid_in
입력하시겠습니까?
출력을 사용하여 기본 사용자 역할 값을 변경하고 이전 사용자 값을 가진 모든 행을 새 사용자 역할로 업데이트할 수 있습니다.
CALL updateDefaultUserRole(@someInt)
각 사용자의 기본값을 업데이트할 수 있습니다.
여기서는 Dynamic SQL을 사용해야 합니다.Default
의 조항Alter Table
는 변수 값을 해결할 수 없습니다.
DELIMITER $$
CREATE PROCEDURE updateDefaultUserRole(
IN rid_in INT
) BEGIN
-- generate the query string for Alter Table
SET @alter_query_str = CONCAT('ALTER TABLE _users
MODIFY rid INT(255) NOT NULL
DEFAULT ',
rid_in); -- Modify the columns default value
-- prepare the query
PREPARE stmt FROM @alter_query_str;
-- execute the query
EXECUTE stmt;
-- deallocate the query
DEALLOCATE PREPARE stmt;
UPDATE _users SET rid = rid_in
WHERE rid < rid_in; -- Update all entries lower than the role ID.
END $$
DELIMITER ;
언급URL : https://stackoverflow.com/questions/53144281/how-to-alter-the-default-value-of-a-column-using-a-procedure
반응형
'source' 카테고리의 다른 글
@Bean과 @Autowired의 차이점 (0) | 2022.09.17 |
---|---|
자바에는 인라인 함수가 있나요? (0) | 2022.09.17 |
Numpy - 배열에 행 추가 (0) | 2022.09.17 |
Python으로 작성된 CSV 파일은 각 행 사이에 공백 행이 있습니다. (0) | 2022.09.17 |
삭제하기 전에 확인 메시지를 표시하는 방법 (0) | 2022.09.17 |