expenses-fb.sql 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. create domain bool smallint check (value in (1,0,Null));
  2. create table ExpenseTypes (
  3. etID bigint not null,
  4. etName varchar(50) not null,
  5. etDescription varchar(100) not null,
  6. etMaxAmount decimal(10,2),
  7. etCost decimal(10,2) default 1,
  8. etActive bool default 1 not null
  9. );
  10. create table Users (
  11. uID bigint not null,
  12. uLogin varchar(50) not null,
  13. uFullName varchar(100) not null,
  14. uPassword varchar(100) not null,
  15. uActive bool default 1 not null
  16. );
  17. create table Projects (
  18. pID bigint not null,
  19. pName varchar(50) not null,
  20. pDescription varchar(100) not null,
  21. pActive bool default 1 not null
  22. );
  23. create table Expenses (
  24. eID bigint not null,
  25. eUserFK bigint not null,
  26. eProjectFK bigint not null,
  27. eTypeFK bigint not null,
  28. eAmount decimal(10,2) not null,
  29. eDate date default 'today' not null,
  30. eComment varchar(1024)
  31. );
  32. create sequence seqExpenseTypesID;
  33. create sequence seqUsersID;
  34. create sequence seqProjectsID;
  35. create sequence seqExpenseID;
  36. alter table ExpenseTypes add constraint pkExpenseTypes primary key (etID);
  37. alter table Users add constraint pkUsers primary key (uID);
  38. alter table Projects add constraint pkProjects primary key (pID);
  39. alter table Expenses add constraint pkExpenses primary key (eID);
  40. SET TERM ^ ;
  41. CREATE TRIGGER ExpenseTypesID FOR ExpenseTypes ACTIVE
  42. BEFORE INSERT POSITION 0
  43. AS
  44. begin
  45. if (NEW.etID is null) then
  46. NEW.etID=GEN_ID(seqExpenseTypesID,1);
  47. end^
  48. CREATE TRIGGER ExpensesID FOR Expenses ACTIVE
  49. BEFORE INSERT POSITION 0
  50. AS
  51. begin
  52. if (NEW.eID is null) then
  53. NEW.eID=GEN_ID(seqExpenseID,1);
  54. end^
  55. CREATE TRIGGER ProjectsID FOR Projects ACTIVE
  56. BEFORE INSERT POSITION 0
  57. AS
  58. begin
  59. if (NEW.pID is null) then
  60. NEW.pID=GEN_ID(seqProjectsID,1);
  61. end^
  62. CREATE TRIGGER UsersID FOR Users ACTIVE
  63. BEFORE INSERT POSITION 0
  64. AS
  65. begin
  66. if (NEW.uID is null) then
  67. NEW.uID=GEN_ID(seqUsersID,1);
  68. end^
  69. set term ^ ;
  70. COMMIT ;