在 SQLiteStudio 中使用 Tcl 脚本填充 SQLite table
Populating SQLite table with Tcl script in SQLiteStudio
我正在尝试使用 SQLiteStudio 的 Tcl 脚本功能填充 SQLite Studio 中 table 的两个 INTEGER
字段。 table 本身是 m✕n 矩形矩阵的表示,其中这两个字段表示元素的索引。
CREATE TABLE matrix ( i INTEGER NOT NULL, j INTEGER NOT NULL, e REAL );
我尝试为第一个字段使用以下脚本重新创建代理项 for 循环:
set i 0; #Initialization code
set i [expr {$i==100?1:$i+1}]; #Per step code
第二个脚本:
set j 0; #Initialization code
set j [expr {$i==100?$j+1:$j}]; #Per step code
当第一个脚本正常填充字段 i
时,第二个脚本显示 Error while executing populating code: can't read "i": no such variable
错误消息,并且 j
字段填充了 null
值。
有没有办法以这种方式使用 SQLiteStudio 的填充机制(即从另一个字段的填充 Tcl 脚本的范围访问字段的新值)?
备注
最终的解决方案如下所示:
#1st script initialization code
set n_i 10
set i 0
#1st script per step code
set i [expr {$i%$n_i==0?1:$i+1}]
#2nd script initialization code
set n_i 10
set i 0
set j 1
#2nd script per step code
set i [expr {$i%$n_i==0?1:$i+1}]
set j [expr {$i%$n_i==0?$j+1:$j}]
看来,填充 Tcl 脚本实际上并不关心变量命名,而只是采用最后设置的变量值来填充给定行的字段。
您不能在两个脚本之间共享变量来填充两个不同的列(尽管这是一个好主意),但在您的情况下,您可以通过从第一列(带有 i
的那个)复制脚本和将其粘贴到 j
的当前代码之前。当然,您将计算 i
两次,但它应该可以完成工作。
我正在尝试使用 SQLiteStudio 的 Tcl 脚本功能填充 SQLite Studio 中 table 的两个 INTEGER
字段。 table 本身是 m✕n 矩形矩阵的表示,其中这两个字段表示元素的索引。
CREATE TABLE matrix ( i INTEGER NOT NULL, j INTEGER NOT NULL, e REAL );
我尝试为第一个字段使用以下脚本重新创建代理项 for 循环:
set i 0; #Initialization code
set i [expr {$i==100?1:$i+1}]; #Per step code
第二个脚本:
set j 0; #Initialization code
set j [expr {$i==100?$j+1:$j}]; #Per step code
当第一个脚本正常填充字段 i
时,第二个脚本显示 Error while executing populating code: can't read "i": no such variable
错误消息,并且 j
字段填充了 null
值。
有没有办法以这种方式使用 SQLiteStudio 的填充机制(即从另一个字段的填充 Tcl 脚本的范围访问字段的新值)?
备注
最终的解决方案如下所示:
#1st script initialization code
set n_i 10
set i 0
#1st script per step code
set i [expr {$i%$n_i==0?1:$i+1}]
#2nd script initialization code
set n_i 10
set i 0
set j 1
#2nd script per step code
set i [expr {$i%$n_i==0?1:$i+1}]
set j [expr {$i%$n_i==0?$j+1:$j}]
看来,填充 Tcl 脚本实际上并不关心变量命名,而只是采用最后设置的变量值来填充给定行的字段。
您不能在两个脚本之间共享变量来填充两个不同的列(尽管这是一个好主意),但在您的情况下,您可以通过从第一列(带有 i
的那个)复制脚本和将其粘贴到 j
的当前代码之前。当然,您将计算 i
两次,但它应该可以完成工作。