35 lines
817 B
Go
35 lines
817 B
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/xwb1989/sqlparser"
|
|
)
|
|
|
|
func main() {
|
|
sql := "UPDATE orders, inventory SET orders.status = 'Processed', inventory.stock = inventory.stock - orders.quantity WHERE orders.product_id = inventory.product_id AND orders.id = 1 AND inventory.stock >= orders.quantity"
|
|
|
|
stmt, err := sqlparser.Parse(sql)
|
|
if err != nil {
|
|
fmt.Println("Parse error: ", err.Error())
|
|
return
|
|
}
|
|
|
|
update, ok := stmt.(*sqlparser.Update)
|
|
if !ok {
|
|
fmt.Println("Not an UPDATE statement")
|
|
return
|
|
}
|
|
|
|
for _, table := range update.TableExprs {
|
|
switch t := table.(type) {
|
|
case *sqlparser.AliasedTableExpr:
|
|
fmt.Println("Table: ", sqlparser.String(t.Expr))
|
|
}
|
|
}
|
|
|
|
for _, expr := range update.Exprs {
|
|
fmt.Printf("Column: %s, New value: %s\n", expr.Name.Name, sqlparser.String(expr.Expr))
|
|
}
|
|
}
|