- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试创建一个过程,该过程将填充表格直到达到一定数量的元素。
目前我有
CREATE PROCEDURE PopulateTable(
IN dbName tinytext,
IN tableName tinytext,
IN amount INT)
BEGIN
DECLARE current_amount INT DEFAULT 0;
SET current_amount = SELECT COUNT(*) FROM dbName,'.',tableName;
WHILE current_amount <= amount DO
set @dll=CONCAT('INSERT INTO `',dbName,'`.`',tableName,'`(',
'`',tableName,'_name`) ',
'VALUES(\'',tableName,'_',current_amount,'\')');
prepare stmt from @ddl;
execute stmt;
SET current_amount = current_amount + 1;
END WHILE;
END;
所以我想做的是,一旦用户调用该过程,该函数将检查并查看当前存在多少个元素,并填充剩余的元素。
我遇到的第一个问题是我不知道如何计算元素的数量,因此我的 SELECT COUNT(*) FROM dbName,'.',tableName;
不起作用。
我还想提出建议,因为我对数据库有点陌生,如果我所做的事情是正确的或者是否有更好的方法来做到这一点?
此外,如果这有任何帮助,我尝试执行此操作的表只有 2 个字段,其中一个是 id,它是自动递增的并且是主要字段,另一个是我正在填充的 profile_name。
感谢大家的帮助!
最佳答案
首先,我认为如果您尝试执行粘贴的代码,则会遇到分隔符问题。过程声明分隔符必须与您在过程代码中使用的分隔符(此处为“;”)不同。您必须使用 DELIMITER statement ;
您的过程属于一个模式;我不确定您是否可以从其他 shemas 查询表(尤其是没有 USE 语句);
如果您的数据库包含不应通过您的过程填充的表,这不是一个好主意;
如果相关表的数量有限,我认为为每个表定义一个过程将是一个更好的主意。这样,表名将在每个过程代码中明确显示,并且可以避免使用准备好的语句;
请小心“amount”参数:如果我将 INT 的最大值作为 amount 传递,您确定您的服务器可以处理请求吗?
我认为您应该在 WHILE 条件中使用“<”而不是“<=”
如果要插入大量行,执行“分组”插入或生成包含所有行并执行唯一 INSERT 的临时表(例如使用 MEMORY 引擎)将获得更好的性能选择临时表的内容。
关于mysql - 填充至一定数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9164086/
我正在尝试开发右边框/Angular 具有特定 Angular (30°) 的表格。我见过一些类似的解决方案,但它们都无法在一定程度上发挥作用。如果我想从 30° 改变到 20°,我不想花太多力气。
我是一名优秀的程序员,十分优秀!