は、INSERTトリガする前にこれを試してみてください -
全スクリプト:
CREATE TABLE member(
user_id VARCHAR(23) NOT NULL,
name VARCHAR(20) DEFAULT NULL
);
DELIMITER $$
CREATE TRIGGER trigger1
BEFORE INSERT
ON member
FOR EACH ROW
BEGIN
-- Find next id for new user - MAX+1
SELECT MAX(CAST(SUBSTRING(user_id, LENGTH(user_id) - 2, 3) AS SIGNED)) + 1 INTO @next_id
FROM member WHERE SUBSTRING(user_id, 1, LENGTH(user_id) - 3) = NEW.name;
SET NEW.user_id = CONCAT(NEW.name, LPAD(IFNULL(@next_id, 1), 3,'0'));
END$$
DELIMITER ;
をいくつかのレコードを挿入します。
INSERT INTO member VALUES('', 'jos');
INSERT INTO member VALUES('', 'jos');
INSERT INTO member VALUES('', 'jos');
INSERT INTO member VALUES('', 'alex');
INSERT INTO member VALUES('', 'alex');
INSERT INTO member VALUES('', 'jos');
チェック結果:
を
SELECT * FROM member;
+---------+------+
| user_id | name |
+---------+------+
| jos001 | jos |
| jos002 | jos |
| jos003 | jos |
| alex001 | alex |
| alex002 | alex |
| jos004 | jos |
+---------+------+
自動インクリメントの主キーがありますか? – vulkanino
申し訳ありませんが、悪い英語。私はAIプライマリキーがありません –
私はあなたが何をしようとしているのか理解できません。オートインクリメント主キーを持つテーブルを作成すると、完了です。 – vulkanino