使用sqlite数据库

时间:2016-04-25 18:18:02

标签: sqlite web2py

  

我正在使用web2py在DatabaseManagement中开发一个项目。我有库存,物品和客户表格如下

     

档案:

db = DAL("sqlite://storage.sqlite")
db.define_table('item',
Field('name', notnull = True,unique=True),
Field('price'),
Field('quantity'),
format = '%(name)s')
  

客户:

db.define_table('customer',
Field('item_name','reference item'),
Field('name', notnull = True,requires=IS_NOT_EMPTY()),
Field('unit_price','double',requires=IS_NOT_EMPTY()),
Field('email',requires = IS_EMAIL(error_message='invalid    email!'),unique='True'),
 Field('adress',requires=IS_NOT_EMPTY()),
 Field('city',requires=IS_NOT_EMPTY()),
 Field('quantity','integer',requires=IS_NOT_EMPTY()),
 Field('state',default='KARNATAKA'),
 Field('contact_number',requires=IS_LENGTH(10,10)),
 Field('total_price',
 compute=lambda r: r['unit_price'] * r['quantity']),
 format='%(name)s')

 db.item.name.requires = IS_NOT_IN_DB(db, db.item.name)
 db.customer.item_name.requires = IS_IN_DB(db, db.item.id, '%(name)s')
  

库存:

db.define_table('stock',
Field('Date','datetime'),
Field('particulars'),
Field('opening_stock','double'),
Field('purchases','double'),
Field('total_price',
compute=lambda r: r['opening_stock'] + r['purchases']),
Field('sales','double'),
Field('closing_stock',
compute=lambda r: r['total_price'] - r['sales']))
  

库存表保留了详细资料,即项目名称和开仓库存,即该详细资料的库存数量,收盘库存,即当天结束时可用的库存。现在,当客户购买物品时,它应该自动扣除库存表,但根据我提到的表格,我手动输入销售数据,并由此计算关闭库存。   但是我想在客户购买时写入触发器,它应该在库存表中扣除意味着销售属性值应该会增加。   我怎么能用web2py? default.py中触发器的触发器语法和函数调用是什么?请让我知道灵魂......

1 个答案:

答案 0 :(得分:0)

您可以使用DAL的_after_insert_after_update回调 - 请参阅this link