例如,我有一张3桌
Table name: Role
table Attributes: roleid (pk), rolename
用户一对多的角色
Table name: user
table Attributes: roleid (fk), userid(pk), trackingid(fk) username, password, email
用户一对一
Table name: tracking
table Attributes: trackingid(pk) approvalstatus*, status, createdby, createdDate(yyyy-mm-dd).
*属性的含义 审批状态 - 管理员将批准任何更改,以便可以等待,批准或拒绝
状态是指示更改请求是新用户/编辑还是删除用户。
如何插入语句以插入新用户以进行审批。因为,当您在数据库中插入数据时应该如下所示
+----------+----------+--------------------+----------+--------+----------------+-----------+-------------+
| username | password | email | rolename | status | approvalstatus | createdby | createdDate |
+----------+----------+--------------------+----------+--------+----------------+-----------+-------------+
| harry | password | harry@yahoo.com.sg | Admin | New | Pending | Barry | 2016-09-20 |
+----------+----------+--------------------+----------+--------+----------------+-----------+-------------+
答案 0 :(得分:-1)
这实际上取决于您与数据库的交互方式。
如果你正在使用像Entity Framework或NHibernate这样的ORM,那么这取决于你如何映射表格,这是开箱即用的。
有关此信息,请查看:
如果您直接对SQL Server执行此操作,则可以使用以下命令:
无论您是否选择了存储过程。或者手工声明你的插页看起来像:
INSERT INTO ROLE (RoleID, RoleName) VALUES (newID(), 'Your Role Name'); --If you have auto increment on your PK you can ignore inserting into RoleID. Most Systems I work with now use GUID's for ID's so this is just an example.
INSERT INTO User (RoleID, UserID, TrackingID, UserName, Password, Email) Values (....)
INSERT INTO Tracking (TrackingID, ApprovalStatus, Status, CreatedBy, CreatedDate) values (....)
在您的数据库中有条目后,您可以使用以下命令更新:
UPDATE Tracking SET ApprovalStatus = 'whatever you want here' where id = X
如果您需要维护跟踪历史记录,而不是更新跟踪记录,则需要插入新行,并始终确保在您选择数据时,您会获得基于日期时间戳。
您的问题中的表格具有误导性。您正在加入三个表来获取这些结果,这可能是您想要的输出结果。