我对SQL和数据库都很陌生。
我正在尝试制作用户的偏好表。
字段为user_id
,pref_no
,prg_code
。
现在,如果我创建了制作pref_no
auto_increment
的表格,那么无论user_id
如何,它都会自动增加。
所以,我的问题是 - 有没有办法定义表格,以便auto_incremented
考虑user_id
或我必须明确找到最后pref_no
为用户发生了什么,然后在插入之前将其递增1?
感谢任何帮助。提前谢谢。
答案 0 :(得分:1)
根据建议的Mjh
和Fahmina
,我们可以为插入创建一个过程。
DELIMITER //
CREATE PROCEDURE test(IN u_id INT(7), p_code INT(5))
BEGIN
SELECT @pno:= MAX(pref_no) FROM temp_choice WHERE user_id = u_id;
IF @pno IS NULL THEN
SET @pno = 1;
ELSE
SET @pno = @pno + 1;
END IF;
INSERT INTO temp_choice VALUES (u_id, @pno, p_code);
END //
DELIMITER ;
现在我们可以使用
轻松插入数据CALL test(1234567, 10101);
答案 1 :(得分:0)
要管理用户的偏好设置,您不需要在此表格中自动添加user_id
,但pref_no
必须是。{/ p>
user_id
将只是你的用户表的refence(或sql中的外键)(其中user_id
应该是auto_incremented)。
要请求给定用户的偏好,您的请求将是:
SELECT * FROM [user table] INNER JOIN [pref table] ON ([user table].user_id = [pref table].user_id) WHERE [user table].user_id = ?
(用你想要的user_id替换'?')