Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 数据库表中的公式/计算列_Sql_Db2_Ibm Cloud - Fatal编程技术网

Sql 数据库表中的公式/计算列

Sql 数据库表中的公式/计算列,sql,db2,ibm-cloud,Sql,Db2,Ibm Cloud,我不认为这是可能的,也不认为这是有意义的,但这里的大多数人比我聪明得多,问我也没什么坏处。是否可以在数据库中创建一个公式表。我不是问。我的意思是,假设我有一个表,其中一列是“价格”,另一列是“数量”,我想要一列“成本”来计算(价格*数量)。。。。当数据被导入时。这样以后我就可以: 从表中选择* 如果你告诉我这是一个愚蠢的问题,我会理解的,但我是从内部客户那里得到的,需要调查一下。我使用的数据库是BlueMix上的DB2。尝试使用触发器。这里有一个教程: 数据库触发器是自动执行的过程代码 对某些

我不认为这是可能的,也不认为这是有意义的,但这里的大多数人比我聪明得多,问我也没什么坏处。是否可以在数据库中创建一个公式表。我不是问。我的意思是,假设我有一个表,其中一列是“价格”,另一列是“数量”,我想要一列“成本”来计算(价格*数量)。。。。当数据被导入时。这样以后我就可以:

从表中选择*


如果你告诉我这是一个愚蠢的问题,我会理解的,但我是从内部客户那里得到的,需要调查一下。我使用的数据库是BlueMix上的DB2。

尝试使用触发器。这里有一个教程:

数据库触发器是自动执行的过程代码 对某些事件的反应


尝试使用触发器。这里有一个教程:

数据库触发器是自动执行的过程代码 对某些事件的反应


您可以将成本列的默认值设置为

ALTER TABLE table-name ALTER COLUMN cost set cost=price*quantity;
或者您可以创建如下触发器

db2 create trigger trigger_name after insert on table_name 
for each row mode db2sql begin atomic update tablle_name 
set cost=qty*price; end  

您可以将成本列的默认值设置为

ALTER TABLE table-name ALTER COLUMN cost set cost=price*quantity;
或者您可以创建如下触发器

db2 create trigger trigger_name after insert on table_name 
for each row mode db2sql begin atomic update tablle_name 
set cost=qty*price; end  

可以使用计算列执行操作。在计算列中,默认公式如下所示

ALTER TABLE <TABLENAME> ADD <COLUMN_NAME> AS (<COLUMN_NAME1> * <COLUMN_NAME2>);
altertableaddas(*);
因此,上面的查询只用于要添加该列的同一个表。 如果要添加另一个表,有很多方法

范例

  • 事务(可能导致死锁)
  • 触发器(可能导致服务器速度降低)
  • 存储过程(带using select子句的正常insert语句)
  • 没有存储过程,我们就可以使用普通的insert语句进行正确的查询
  • 例如:

    CREATE TABLE Cost_Table
    (
    Cost int
    );
    
    INSERT INTO Cost_Table (Cost)<BR>
    SELECT price * quantity FROM Table_name;
    
    创建成本表\u表
    (
    成本整数
    );
    插入成本表(成本)
    从表名称中选择价格*数量;
    这是一种优化的方法。因此,我们可以使用上面的查询而不是触发器。
    因此,上面的查询使用内部的事务和存储过程

    您可以使用计算列执行操作。在计算列中,默认公式如下所示

    ALTER TABLE <TABLENAME> ADD <COLUMN_NAME> AS (<COLUMN_NAME1> * <COLUMN_NAME2>);
    
    altertableaddas(*);
    
    因此,上面的查询只用于要添加该列的同一个表。 如果要添加另一个表,有很多方法

    范例

  • 事务(可能导致死锁)
  • 触发器(可能导致服务器速度降低)
  • 存储过程(带using select子句的正常insert语句)
  • 没有存储过程,我们就可以使用普通的insert语句进行正确的查询
  • 例如:

    CREATE TABLE Cost_Table
    (
    Cost int
    );
    
    INSERT INTO Cost_Table (Cost)<BR>
    SELECT price * quantity FROM Table_name;
    
    创建成本表\u表
    (
    成本整数
    );
    插入成本表(成本)
    从表名称中选择价格*数量;
    这是一种优化的方法。因此,我们可以使用上面的查询而不是触发器。
    因此,上面的查询使用内部的事务和存储过程

    如果不小心,可能会导致重大安全漏洞。查找“SQL代码注入”


    但要做到这一点,另一种方法可能是在存储过程中使用
    executeimdeate

    如果不小心,可能会导致重大安全漏洞。查找“SQL代码注入”


    但要做到这一点,另一种方法可能是在存储过程中使用
    executeimdeate

    谢谢你,吉内什。我有点希望你能告诉我,我连问这个问题都很愚蠢。。。。。但现在我必须这么做了:/谢谢你,谢谢你。我有点希望你能告诉我,我连问这个问题都很愚蠢。。。。。但现在我必须这么做了:谢谢你,弗拉达特。我有点希望你能告诉我,我连问这个问题都很愚蠢。。。。。但现在我必须这么做了:谢谢你,弗拉达特。我有点希望你能告诉我,我连问这个问题都很愚蠢。。。。。但是现在我必须这么做了:谢谢