我正在尝试运行一个简单的update命令来从此视图(即emp)更改基表。但是我收到了我从未见过的错误消息,并且我不太理解它在说什么。如果需要,我可以提供任何其他信息。
UPDATE emp_view_updt SET deptno = 30 WHERE empno = 7369;
这是emp_view_updt的定义:
CREATE VIEW emp_view_updt as
SELECT e.empno, e.ename, e.job, d.deptno,
DECODE (d.deptno, 10, 'New York',
20, 'Dallas',
30, 'Chicago',
40, 'Boston') as loc
FROM emp e INNER JOIN
dept d
ON e.deptno = d.deptno;
答案 0 :(得分:1)
我相信您缺少参照完整性约束(可能还有主键)。确保add_filter( 'woocommerce_get_price_html', 'custom_price_html', 100, 2 );
function custom_price_html( $price, $product ){
if ( is_product() ) {
// Simple products and variations
if( $product->is_type( 'simple' ) || $product->is_type( 'variation' ) )
{
$sales_price_to = $product->get_date_on_sale_to();
if( ! empty($sales_price_to) ){
$replacement = ' </ins> <span class="notice-price">(on offer until ';
return str_replace( '</ins>', $replacement . date( 'j.M.Y', $sales_price_to->getTimestamp() ) . ')</span>', $price );
}
}
// Variable products
else if ( $product->is_type( 'variable' ) )
{
$content = '';
// Loop through variations
foreach ( $product->get_children() as $key => $variation_id ) {
$variation = wc_get_product($variation_id);
$sales_price_to = $variation->get_date_on_sale_to();
if( ! empty($sales_price_to) ){
$date_to = date( 'j.M.Y', $sales_price_to->getTimestamp() );
$class = $key == 0 ? 'class="active"' : '';
$content .= '<i data-id="'.$variation_id.'" data-order="'.($key + 1).'" '.$class.'>'. $date_to .'</i>';
}
}
if( ! empty($content) ){
return $price . ' <span class="notice-price">(on offer until ' . $content .')</span>';
}
}
}
return $price;
}
是deptno
的主键,并从dept
到emp
添加一个外键约束,并且更新应该起作用。这使数据库可以推断出视图的每个结果都映射到dept
中的不同行。
dept
https://livesql.oracle.com/apex/livesql/s/hm2ybpb8hnjoplqmdfoa4sb56