如果表中的列未提供任何内容,是否可以自动生成数字
#SurveyId,Name,PhoneNumber
1,David,071234234
1,John, NULL
预期产量
#SurveyId,Name,PhoneNumber
1,David,071234234
1,John, 3274985AUTO
我想为我的表编写一个触发器以执行自动生成选项;我想使用UUID()自动生成数字
语法错误:
15:10:23 CREATE TRIGGER mobilecheck BEFORE INSERT ON reg02_maininfo `FOR EACH ROW IF NEW.farmermobile IS NULL THEN SET NEW.farmermobile = floor(rand()*900000)+100000 Error Code: 1064. You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '' at line 2 0.0015 sec`
答案 0 :(得分:1)
您可以通过这种方式完成
SELECT SurveyId, Name, IFNULL(PhoneNumber,floor(rand()*900000)+100000) as PhoneNumber FROM table
我没有在末尾添加AUTO
,就好像该字段只接受整数一样,也会给您带来错误。
您还可以更新表以直接替换所有空值
UPDATE Table SET PhoneNumber = floor(rand()*900000)+100000
WHERE PhoneNumber IS NULL;
对于触发器,您可以使用以下命令:
CREATE TRIGGER phonecheck BEFORE INSERT ON tablename FOR EACH ROW IF NEW.PhoneNumber IS NULL THEN SET NEW.PhoneNumber = floor(rand()*900000)+100000; END IF;
答案 1 :(得分:-1)
如果不为空,则使用COALESCE来获取;如果为FLOOR + RAND,则获取一个随机数;否则,使用CONCAT在末尾添加AUTO
?
SELECT `#SurveyId`,`Name`,COALESCE(`PhoneNumber`,CONCAT((FLOOR(RAND()*(9999999-1000000+1))+1000000),'AUTO')) AS PhoneNumber