데이터베이스 개발자 질문과 답변 게시판
데이터베이스 개발/운영 관련 질문과 답변을 올리는 게시판입니다. 궁금하신 내용을 이곳에서 문의하시면 SQLER 분들의 답변을 받으실 수 있습니다. 문의를 하실때에는 최근 작업하신 특이 사항이나, 장애 발생 전 상황을 상세히 올려 주시면 답글을 적어주시는 SQLER분들의 답변이 더 정확할 수 있으니 도움 되시길 바랍니다. 쿼리 문의일 경우, 실제 문제가 재현되는 테이블생성, 샘플데이터 생성 쿼리를 함께 올려 주시면 더 빠르고 정확한 쿼리 문의 응답이 가능합니다.
레코드 갯수가 5백만개 정도되는 장바구니 테이블의 갯수 컬럼이 있는데..
현재 값이 모두 0으로 들어가 있습니다.
그런데.. 이 갯수 컬럼의 값을 500에서 1000 사이의 난수를 발생시켜서 무작위로 update 해야 하는데요..
프로시저를 사용해야 한다는데.. 제가 프로시저를 해본적이 없어서..
제가 하는 방식으로 하니 전체 값이 똑같이 update 되는것 까지 밖에 안되네요.
각 레코드별로 무작위로 update 하려면 프로시저를 어떤식으로 사용해야 할까요..
도움 꼭.. 부탁드리겠습니다.
-- 원하시는 답변인지는 모르겠습니다.
-- 프로덕션 서버라면 충분히 검증하고 업데이트 하시기 바랍니다.
-- 예제 코드
CREATE TABLE AAA1111(A INT, R INT)
GO
DECLARE @I INT = 0
WHILE @I < 10000
BEGIN
INSERT AAA1111 VALUES (@I, 0)
SET @I += 1
END
GO
CREATE VIEW vw_rand(ran_num)
AS
SELECT RAND()
GO
CREATE FUNCTION dbo.GetRandVal
(
)
RETURNS INT
AS
BEGIN
DECLARE @R DECIMAL(12, 6)
SELECT @R = RAN_NUM FROM VW_RAND
RETURN 500 + (CAST(@R * 100000 AS INT) % 500)
END
GO
CREATE PROC dbo.SetRandVal
AS
UPDATE AAA1111 set r = dbo.GetRandVal()
GO
-- 업데이트
EXEC dbo.SetRandVal