ks_oracle.sql 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633
  1. CREATE TABLE auth_group (
  2. id INTEGER NOT NULL PRIMARY KEY,
  3. name VARCHAR2(150) NOT NULL
  4. );
  5. CREATE SEQUENCE seq_auth_group START WITH 1 INCREMENT BY 1;
  6. CREATE OR REPLACE TRIGGER tr_auth_group
  7. BEFORE INSERT OR UPDATE OF id ON auth_group
  8. FOR EACH ROW
  9. BEGIN
  10. IF ( :NEW.id = 0 OR :NEW.id IS NULL ) THEN
  11. SELECT seq_auth_group.NEXTVAL INTO :NEW.id FROM DUAL;
  12. END IF;
  13. END;
  14. CREATE TABLE auth_group_permissions (
  15. id INTEGER NOT NULL PRIMARY KEY,
  16. group_id INTEGER NOT NULL,
  17. permission_id INTEGER NOT NULL
  18. );
  19. CREATE SEQUENCE seq_auth_group_permissions START WITH 1 INCREMENT BY 1;
  20. CREATE OR REPLACE TRIGGER tr_auth_group_permissions
  21. BEFORE INSERT OR UPDATE OF id ON auth_group_permissions
  22. FOR EACH ROW
  23. BEGIN
  24. IF ( :NEW.id = 0 OR :NEW.id IS NULL ) THEN
  25. SELECT seq_auth_group_permissions.NEXTVAL INTO :NEW.id FROM DUAL;
  26. END IF;
  27. END;
  28. CREATE TABLE auth_permission (
  29. id INTEGER NOT NULL PRIMARY KEY,
  30. name VARCHAR2(255) NOT NULL,
  31. content_type_id INTEGER NOT NULL,
  32. codename VARCHAR2(100) NOT NULL
  33. );
  34. CREATE SEQUENCE seq_auth_permission START WITH 1 INCREMENT BY 1;
  35. CREATE OR REPLACE TRIGGER tr_auth_permission
  36. BEFORE INSERT OR UPDATE OF id ON auth_permission
  37. FOR EACH ROW
  38. BEGIN
  39. IF ( :NEW.id = 0 OR :NEW.id IS NULL ) THEN
  40. SELECT seq_auth_permission.NEXTVAL INTO :NEW.id FROM DUAL;
  41. END IF;
  42. END;
  43. INSERT INTO auth_permission VALUES ('1', 'Can add permission', '1', 'add_permission');
  44. INSERT INTO auth_permission VALUES ('2', 'Can change permission', '1', 'change_permission');
  45. INSERT INTO auth_permission VALUES ('3', 'Can delete permission', '1', 'delete_permission');
  46. INSERT INTO auth_permission VALUES ('4', 'Can view permission', '1', 'view_permission');
  47. INSERT INTO auth_permission VALUES ('5', 'Can add group', '2', 'add_group');
  48. INSERT INTO auth_permission VALUES ('6', 'Can change group', '2', 'change_group');
  49. INSERT INTO auth_permission VALUES ('7', 'Can delete group', '2', 'delete_group');
  50. INSERT INTO auth_permission VALUES ('8', 'Can view group', '2', 'view_group');
  51. INSERT INTO auth_permission VALUES ('9', 'Can add content type', '3', 'add_contenttype');
  52. INSERT INTO auth_permission VALUES ('10', 'Can change content type', '3', 'change_contenttype');
  53. INSERT INTO auth_permission VALUES ('11', 'Can delete content type', '3', 'delete_contenttype');
  54. INSERT INTO auth_permission VALUES ('12', 'Can view content type', '3', 'view_contenttype');
  55. INSERT INTO auth_permission VALUES ('13', 'Can add session', '4', 'add_session');
  56. INSERT INTO auth_permission VALUES ('14', 'Can change session', '4', 'change_session');
  57. INSERT INTO auth_permission VALUES ('15', 'Can delete session', '4', 'delete_session');
  58. INSERT INTO auth_permission VALUES ('16', 'Can view session', '4', 'view_session');
  59. INSERT INTO auth_permission VALUES ('17', '浏览', '8', 'view_department');
  60. INSERT INTO auth_permission VALUES ('18', '添加', '8', 'add_department');
  61. INSERT INTO auth_permission VALUES ('19', '修改', '8', 'edit_department');
  62. INSERT INTO auth_permission VALUES ('20', '删除', '8', 'delete_department');
  63. INSERT INTO auth_permission VALUES ('21', '浏览', '9', 'view_user');
  64. INSERT INTO auth_permission VALUES ('22', '添加', '9', 'add_user');
  65. INSERT INTO auth_permission VALUES ('23', '修改', '9', 'edit_user');
  66. INSERT INTO auth_permission VALUES ('24', '删除', '9', 'delete_user');
  67. CREATE TABLE base_chapter (
  68. id INTEGER NOT NULL PRIMARY KEY,
  69. name VARCHAR2(100) NOT NULL,
  70. notes VARCHAR2(500) DEFAULT NULL,
  71. "DELETE" INTEGER NOT NULL,
  72. subject_id INTEGER NOT NULL
  73. );
  74. CREATE SEQUENCE seq_base_chapter START WITH 1 INCREMENT BY 1;
  75. CREATE OR REPLACE TRIGGER tr_base_chapter
  76. BEFORE INSERT OR UPDATE OF id ON base_chapter
  77. FOR EACH ROW
  78. BEGIN
  79. IF ( :NEW.id = 0 OR :NEW.id IS NULL ) THEN
  80. SELECT seq_base_chapter.NEXTVAL INTO :NEW.id FROM DUAL;
  81. END IF;
  82. END;
  83. CREATE TABLE base_subject (
  84. id INTEGER NOT NULL PRIMARY KEY,
  85. name VARCHAR2(100) NOT NULL,
  86. notes VARCHAR2(500) DEFAULT NULL,
  87. "DELETE" INTEGER NOT NULL
  88. );
  89. CREATE SEQUENCE seq_base_subject START WITH 1 INCREMENT BY 1;
  90. CREATE OR REPLACE TRIGGER tr_base_subject
  91. BEFORE INSERT OR UPDATE OF id ON base_subject
  92. FOR EACH ROW
  93. BEGIN
  94. IF ( :NEW.id = 0 OR :NEW.id IS NULL ) THEN
  95. SELECT seq_base_subject.NEXTVAL INTO :NEW.id FROM DUAL;
  96. END IF;
  97. END;
  98. CREATE TABLE django_content_type (
  99. id INTEGER NOT NULL PRIMARY KEY,
  100. app_label VARCHAR2(100) NOT NULL,
  101. model VARCHAR2(100) NOT NULL
  102. );
  103. CREATE SEQUENCE seq_django_content_type START WITH 1 INCREMENT BY 1;
  104. CREATE OR REPLACE TRIGGER tr_django_content_type
  105. BEFORE INSERT OR UPDATE OF id ON django_content_type
  106. FOR EACH ROW
  107. BEGIN
  108. IF ( :NEW.id = 0 OR :NEW.id IS NULL ) THEN
  109. SELECT seq_django_content_type.NEXTVAL INTO :NEW.id FROM DUAL;
  110. END IF;
  111. END;
  112. INSERT INTO django_content_type VALUES ('2', 'auth', 'group');
  113. INSERT INTO django_content_type VALUES ('1', 'auth', 'permission');
  114. INSERT INTO django_content_type VALUES ('3', 'contenttypes', 'contenttype');
  115. INSERT INTO django_content_type VALUES ('23', 'errorbook', 'errorbook');
  116. INSERT INTO django_content_type VALUES ('12', 'exam', 'exam');
  117. INSERT INTO django_content_type VALUES ('13', 'exam', 'examanswerfilllog');
  118. INSERT INTO django_content_type VALUES ('14', 'exam', 'examanswerlog');
  119. INSERT INTO django_content_type VALUES ('15', 'exam', 'examansweroptionlog');
  120. INSERT INTO django_content_type VALUES ('16', 'exam', 'examlog');
  121. INSERT INTO django_content_type VALUES ('17', 'exampaper', 'exampaper');
  122. INSERT INTO django_content_type VALUES ('18', 'exampaper', 'exampaperdetail');
  123. INSERT INTO django_content_type VALUES ('19', 'examquestion', 'examquestion');
  124. INSERT INTO django_content_type VALUES ('20', 'examquestion', 'examquestionfeedback');
  125. INSERT INTO django_content_type VALUES ('22', 'examquestion', 'examquestionfill');
  126. INSERT INTO django_content_type VALUES ('21', 'examquestion', 'examquestionoption');
  127. INSERT INTO django_content_type VALUES ('7', 'foundation', 'chapter');
  128. INSERT INTO django_content_type VALUES ('6', 'foundation', 'subject');
  129. INSERT INTO django_content_type VALUES ('10', 'knowledge', 'knowledgebase');
  130. INSERT INTO django_content_type VALUES ('11', 'knowledge', 'knowledgebasefeedback');
  131. INSERT INTO django_content_type VALUES ('24', 'practiselog', 'practiseanswerfilllog');
  132. INSERT INTO django_content_type VALUES ('25', 'practiselog', 'practiseanswerlog');
  133. INSERT INTO django_content_type VALUES ('26', 'practiselog', 'practiseansweroptionlog');
  134. INSERT INTO django_content_type VALUES ('27', 'practiselog', 'practiselog');
  135. INSERT INTO django_content_type VALUES ('4', 'sessions', 'session');
  136. INSERT INTO django_content_type VALUES ('8', 'staff', 'department');
  137. INSERT INTO django_content_type VALUES ('9', 'staff', 'user');
  138. INSERT INTO django_content_type VALUES ('5', 'system', 'syslog');
  139. CREATE TABLE django_migrations (
  140. id INTEGER NOT NULL PRIMARY KEY,
  141. app VARCHAR2(255) NOT NULL,
  142. name VARCHAR2(255) NOT NULL,
  143. applied DATE NOT NULL
  144. );
  145. CREATE SEQUENCE seq_django_migrations START WITH 1 INCREMENT BY 1;
  146. CREATE OR REPLACE TRIGGER tr_django_migrations
  147. BEFORE INSERT OR UPDATE OF id ON django_migrations
  148. FOR EACH ROW
  149. BEGIN
  150. IF ( :NEW.id = 0 OR :NEW.id IS NULL ) THEN
  151. SELECT seq_django_migrations.NEXTVAL INTO :NEW.id FROM DUAL;
  152. END IF;
  153. END;
  154. CREATE TABLE django_session (
  155. session_key VARCHAR2(40) NOT NULL,
  156. session_data CLOB NOT NULL,
  157. expire_date DATE NOT NULL
  158. );
  159. CREATE TABLE exam (
  160. id INTEGER NOT NULL PRIMARY KEY,
  161. name VARCHAR2(200) NOT NULL,
  162. "TYPE" INTEGER DEFAULT NULL,
  163. duration INTEGER NOT NULL,
  164. exam_time DATE NOT NULL,
  165. exam_end_time DATE DEFAULT NULL,
  166. "DESC" CLOB,
  167. examinee_count INTEGER NOT NULL,
  168. create_time DATE NOT NULL,
  169. "DELETE" INTEGER NOT NULL,
  170. create_user_id INTEGER NOT NULL,
  171. exampaper_id INTEGER DEFAULT NULL,
  172. subject_id INTEGER DEFAULT NULL
  173. );
  174. CREATE SEQUENCE seq_exam START WITH 1 INCREMENT BY 1;
  175. CREATE OR REPLACE TRIGGER tr_exam
  176. BEFORE INSERT OR UPDATE OF id ON exam
  177. FOR EACH ROW
  178. BEGIN
  179. IF ( :NEW.id = 0 OR :NEW.id IS NULL ) THEN
  180. SELECT seq_exam.NEXTVAL INTO :NEW.id FROM DUAL;
  181. END IF;
  182. END;
  183. CREATE TABLE exam_answer_fill_log (
  184. id INTEGER NOT NULL PRIMARY KEY,
  185. content CLOB NOT NULL,
  186. "ORDER" INTEGER NOT NULL,
  187. main_id INTEGER NOT NULL
  188. );
  189. CREATE SEQUENCE seq_exam_answer_fill_log START WITH 1 INCREMENT BY 1;
  190. CREATE OR REPLACE TRIGGER tr_exam_answer_fill_log
  191. BEFORE INSERT OR UPDATE OF id ON exam_answer_fill_log
  192. FOR EACH ROW
  193. BEGIN
  194. IF ( :NEW.id = 0 OR :NEW.id IS NULL ) THEN
  195. SELECT seq_exam_answer_fill_log.NEXTVAL INTO :NEW.id FROM DUAL;
  196. END IF;
  197. END;
  198. CREATE TABLE exam_answer_log (
  199. id INTEGER NOT NULL PRIMARY KEY,
  200. status INTEGER NOT NULL,
  201. detail_id INTEGER NOT NULL,
  202. main_id INTEGER NOT NULL
  203. );
  204. CREATE SEQUENCE seq_exam_answer_log START WITH 1 INCREMENT BY 1;
  205. CREATE OR REPLACE TRIGGER tr_exam_answer_log
  206. BEFORE INSERT OR UPDATE OF id ON exam_answer_log
  207. FOR EACH ROW
  208. BEGIN
  209. IF ( :NEW.id = 0 OR :NEW.id IS NULL ) THEN
  210. SELECT seq_exam_answer_log.NEXTVAL INTO :NEW.id FROM DUAL;
  211. END IF;
  212. END;
  213. CREATE TABLE exam_answer_option_log (
  214. id INTEGER NOT NULL PRIMARY KEY,
  215. main_id INTEGER NOT NULL,
  216. option_id INTEGER NOT NULL
  217. );
  218. CREATE SEQUENCE seq_exam_answer_option_log START WITH 1 INCREMENT BY 1;
  219. CREATE OR REPLACE TRIGGER tr_exam_answer_option_log
  220. BEFORE INSERT OR UPDATE OF id ON exam_answer_option_log
  221. FOR EACH ROW
  222. BEGIN
  223. IF ( :NEW.id = 0 OR :NEW.id IS NULL ) THEN
  224. SELECT seq_exam_answer_option_log.NEXTVAL INTO :NEW.id FROM DUAL;
  225. END IF;
  226. END;
  227. CREATE TABLE exam_log (
  228. id INTEGER NOT NULL PRIMARY KEY,
  229. "TYPE" INTEGER NOT NULL,
  230. scores INTEGER DEFAULT NULL,
  231. "RANK" INTEGER DEFAULT NULL,
  232. use_time INTEGER DEFAULT NULL,
  233. exam_time DATE DEFAULT NULL,
  234. submit_time DATE DEFAULT NULL,
  235. single_answer_scores INTEGER NOT NULL,
  236. multiple_answer_scores INTEGER NOT NULL,
  237. fill_answer_scores INTEGER NOT NULL,
  238. judgment_answer_scores INTEGER NOT NULL,
  239. single_answer_count INTEGER NOT NULL,
  240. multiple_answer_count INTEGER NOT NULL,
  241. fill_answer_count INTEGER NOT NULL,
  242. judgment_answer_count INTEGER NOT NULL,
  243. is_delete INTEGER NOT NULL,
  244. exam_id INTEGER DEFAULT NULL,
  245. exampaper_id INTEGER DEFAULT NULL,
  246. user_id INTEGER NOT NULL
  247. );
  248. CREATE SEQUENCE seq_exam_log START WITH 1 INCREMENT BY 1;
  249. CREATE OR REPLACE TRIGGER tr_exam_log
  250. BEFORE INSERT OR UPDATE OF id ON exam_log
  251. FOR EACH ROW
  252. BEGIN
  253. IF ( :NEW.id = 0 OR :NEW.id IS NULL ) THEN
  254. SELECT seq_exam_log.NEXTVAL INTO :NEW.id FROM DUAL;
  255. END IF;
  256. END;
  257. CREATE TABLE exam_paper (
  258. id INTEGER NOT NULL PRIMARY KEY,
  259. name VARCHAR2(200) NOT NULL,
  260. "TYPE" INTEGER NOT NULL,
  261. passline INTEGER NOT NULL,
  262. "DESC" CLOB,
  263. single_simple_count INTEGER NOT NULL,
  264. multiple_simple_count INTEGER NOT NULL,
  265. fill_simple_count INTEGER NOT NULL,
  266. judgment_simple_count INTEGER NOT NULL,
  267. single_mid_count INTEGER NOT NULL,
  268. multiple_mid_count INTEGER NOT NULL,
  269. fill_mid_count INTEGER NOT NULL,
  270. judgment_mid_count INTEGER NOT NULL,
  271. single_hard_count INTEGER NOT NULL,
  272. multiple_hard_count INTEGER NOT NULL,
  273. fill_hard_count INTEGER NOT NULL,
  274. judgment_hard_count INTEGER NOT NULL,
  275. single_scores INTEGER NOT NULL,
  276. multiple_scores INTEGER NOT NULL,
  277. fill_scores INTEGER NOT NULL,
  278. judgment_scores INTEGER NOT NULL,
  279. single_total_count INTEGER NOT NULL,
  280. multiple_total_count INTEGER NOT NULL,
  281. fill_total_count INTEGER NOT NULL,
  282. judgment_total_count INTEGER NOT NULL,
  283. single_total_scores INTEGER NOT NULL,
  284. multiple_total_scores INTEGER NOT NULL,
  285. fill_total_scores INTEGER NOT NULL,
  286. judgment_total_scores INTEGER NOT NULL,
  287. question_total_count INTEGER NOT NULL,
  288. question_total_scores INTEGER NOT NULL,
  289. create_time DATE NOT NULL,
  290. "DELETE" INTEGER NOT NULL,
  291. did_count INTEGER NOT NULL,
  292. create_user_id INTEGER NOT NULL,
  293. subject_id INTEGER NOT NULL
  294. );
  295. CREATE SEQUENCE seq_exam_paper START WITH 1 INCREMENT BY 1;
  296. CREATE OR REPLACE TRIGGER tr_exam_paper
  297. BEFORE INSERT OR UPDATE OF id ON exam_paper
  298. FOR EACH ROW
  299. BEGIN
  300. IF ( :NEW.id = 0 OR :NEW.id IS NULL ) THEN
  301. SELECT seq_exam_paper.NEXTVAL INTO :NEW.id FROM DUAL;
  302. END IF;
  303. END;
  304. CREATE TABLE exam_paper_detail (
  305. id INTEGER NOT NULL PRIMARY KEY,
  306. "ORDER" INTEGER NOT NULL,
  307. "DELETE" INTEGER NOT NULL,
  308. main_id INTEGER NOT NULL,
  309. question_id INTEGER NOT NULL
  310. );
  311. CREATE SEQUENCE seq_exam_paper_detail START WITH 1 INCREMENT BY 1;
  312. CREATE OR REPLACE TRIGGER tr_exam_paper_detail
  313. BEFORE INSERT OR UPDATE OF id ON exam_paper_detail
  314. FOR EACH ROW
  315. BEGIN
  316. IF ( :NEW.id = 0 OR :NEW.id IS NULL ) THEN
  317. SELECT seq_exam_paper_detail.NEXTVAL INTO :NEW.id FROM DUAL;
  318. END IF;
  319. END;
  320. CREATE TABLE exam_question (
  321. id INTEGER NOT NULL PRIMARY KEY,
  322. "TYPE" INTEGER NOT NULL,
  323. difficulty INTEGER NOT NULL,
  324. scores INTEGER NOT NULL,
  325. title CLOB NOT NULL,
  326. judgment INTEGER NOT NULL,
  327. analysis CLOB,
  328. create_time DATE NOT NULL,
  329. "DELETE" INTEGER NOT NULL,
  330. chapter_id INTEGER NOT NULL,
  331. create_user_id INTEGER NOT NULL
  332. );
  333. CREATE SEQUENCE seq_exam_question START WITH 1 INCREMENT BY 1;
  334. CREATE OR REPLACE TRIGGER tr_exam_question
  335. BEFORE INSERT OR UPDATE OF id ON exam_question
  336. FOR EACH ROW
  337. BEGIN
  338. IF ( :NEW.id = 0 OR :NEW.id IS NULL ) THEN
  339. SELECT seq_exam_question.NEXTVAL INTO :NEW.id FROM DUAL;
  340. END IF;
  341. END;
  342. CREATE TABLE exam_question_feedback (
  343. id INTEGER NOT NULL PRIMARY KEY,
  344. "TYPE" INTEGER NOT NULL,
  345. "DESC" CLOB,
  346. create_time DATE NOT NULL,
  347. status INTEGER NOT NULL,
  348. process_time DATE DEFAULT NULL,
  349. create_user_id INTEGER NOT NULL,
  350. main_id INTEGER NOT NULL,
  351. process_user_id INTEGER DEFAULT NULL
  352. );
  353. CREATE SEQUENCE seq_exam_question_feedback START WITH 1 INCREMENT BY 1;
  354. CREATE OR REPLACE TRIGGER tr_exam_question_feedback
  355. BEFORE INSERT OR UPDATE OF id ON exam_question_feedback
  356. FOR EACH ROW
  357. BEGIN
  358. IF ( :NEW.id = 0 OR :NEW.id IS NULL ) THEN
  359. SELECT seq_exam_question_feedback.NEXTVAL INTO :NEW.id FROM DUAL;
  360. END IF;
  361. END;
  362. CREATE TABLE exam_question_fill (
  363. id INTEGER NOT NULL PRIMARY KEY,
  364. content CLOB NOT NULL,
  365. "ORDER" INTEGER NOT NULL,
  366. "DELETE" INTEGER NOT NULL,
  367. main_id INTEGER NOT NULL
  368. );
  369. CREATE SEQUENCE seq_exam_question_fill START WITH 1 INCREMENT BY 1;
  370. CREATE OR REPLACE TRIGGER tr_exam_question_fill
  371. BEFORE INSERT OR UPDATE OF id ON exam_question_fill
  372. FOR EACH ROW
  373. BEGIN
  374. IF ( :NEW.id = 0 OR :NEW.id IS NULL ) THEN
  375. SELECT seq_exam_question_fill.NEXTVAL INTO :NEW.id FROM DUAL;
  376. END IF;
  377. END;
  378. CREATE TABLE exam_question_option (
  379. id INTEGER NOT NULL PRIMARY KEY,
  380. content CLOB NOT NULL,
  381. "RIGHT" INTEGER NOT NULL,
  382. "DELETE" INTEGER NOT NULL,
  383. main_id INTEGER NOT NULL
  384. );
  385. CREATE SEQUENCE seq_exam_question_option START WITH 1 INCREMENT BY 1;
  386. CREATE OR REPLACE TRIGGER tr_exam_question_option
  387. BEFORE INSERT OR UPDATE OF id ON exam_question_option
  388. FOR EACH ROW
  389. BEGIN
  390. IF ( :NEW.id = 0 OR :NEW.id IS NULL ) THEN
  391. SELECT seq_exam_question_option.NEXTVAL INTO :NEW.id FROM DUAL;
  392. END IF;
  393. END;
  394. CREATE TABLE knowledge_base (
  395. id INTEGER NOT NULL PRIMARY KEY,
  396. name VARCHAR2(200) NOT NULL,
  397. feature CLOB NOT NULL,
  398. "DESC" CLOB,
  399. create_time DATE NOT NULL,
  400. "DELETE" INTEGER NOT NULL,
  401. chapter_id INTEGER NOT NULL,
  402. create_user_id INTEGER NOT NULL
  403. );
  404. CREATE SEQUENCE seq_knowledge_base START WITH 1 INCREMENT BY 1;
  405. CREATE OR REPLACE TRIGGER tr_knowledge_base
  406. BEFORE INSERT OR UPDATE OF id ON knowledge_base
  407. FOR EACH ROW
  408. BEGIN
  409. IF ( :NEW.id = 0 OR :NEW.id IS NULL ) THEN
  410. SELECT seq_knowledge_base.NEXTVAL INTO :NEW.id FROM DUAL;
  411. END IF;
  412. END;
  413. CREATE TABLE knowledge_base_feedback (
  414. id INTEGER NOT NULL PRIMARY KEY,
  415. "TYPE" INTEGER NOT NULL,
  416. "DESC" CLOB,
  417. create_time DATE NOT NULL,
  418. status INTEGER NOT NULL,
  419. process_time DATE DEFAULT NULL,
  420. create_user_id INTEGER NOT NULL,
  421. main_id INTEGER NOT NULL,
  422. process_user_id INTEGER DEFAULT NULL
  423. );
  424. CREATE SEQUENCE seq_knowledge_base_feedback START WITH 1 INCREMENT BY 1;
  425. CREATE OR REPLACE TRIGGER tr_knowledge_base_feedback
  426. BEFORE INSERT OR UPDATE OF id ON knowledge_base_feedback
  427. FOR EACH ROW
  428. BEGIN
  429. IF ( :NEW.id = 0 OR :NEW.id IS NULL ) THEN
  430. SELECT seq_knowledge_base_feedback.NEXTVAL INTO :NEW.id FROM DUAL;
  431. END IF;
  432. END;
  433. CREATE TABLE practise_answer_fill_log (
  434. id INTEGER NOT NULL PRIMARY KEY,
  435. content CLOB NOT NULL,
  436. "ORDER" INTEGER NOT NULL,
  437. main_id INTEGER NOT NULL
  438. );
  439. CREATE SEQUENCE seq_practise_answer_fill_log START WITH 1 INCREMENT BY 1;
  440. CREATE OR REPLACE TRIGGER tr_practise_answer_fill_log
  441. BEFORE INSERT OR UPDATE OF id ON practise_answer_fill_log
  442. FOR EACH ROW
  443. BEGIN
  444. IF ( :NEW.id = 0 OR :NEW.id IS NULL ) THEN
  445. SELECT seq_practise_answer_fill_log.NEXTVAL INTO :NEW.id FROM DUAL;
  446. END IF;
  447. END;
  448. CREATE TABLE practise_answer_log (
  449. id INTEGER NOT NULL PRIMARY KEY,
  450. status INTEGER DEFAULT NULL,
  451. main_id INTEGER NOT NULL,
  452. question_id INTEGER NOT NULL
  453. );
  454. CREATE SEQUENCE seq_practise_answer_log START WITH 1 INCREMENT BY 1;
  455. CREATE OR REPLACE TRIGGER tr_practise_answer_log
  456. BEFORE INSERT OR UPDATE OF id ON practise_answer_log
  457. FOR EACH ROW
  458. BEGIN
  459. IF ( :NEW.id = 0 OR :NEW.id IS NULL ) THEN
  460. SELECT seq_practise_answer_log.NEXTVAL INTO :NEW.id FROM DUAL;
  461. END IF;
  462. END;
  463. CREATE TABLE practise_answer_option_log (
  464. id INTEGER NOT NULL PRIMARY KEY,
  465. main_id INTEGER NOT NULL,
  466. option_id INTEGER NOT NULL
  467. );
  468. CREATE SEQUENCE seq_practise_answer_option_log START WITH 1 INCREMENT BY 1;
  469. CREATE OR REPLACE TRIGGER tr_practise_answer_option_log
  470. BEFORE INSERT OR UPDATE OF id ON practise_answer_option_log
  471. FOR EACH ROW
  472. BEGIN
  473. IF ( :NEW.id = 0 OR :NEW.id IS NULL ) THEN
  474. SELECT seq_practise_answer_option_log.NEXTVAL INTO :NEW.id FROM DUAL;
  475. END IF;
  476. END;
  477. CREATE TABLE practise_error_book (
  478. id INTEGER NOT NULL PRIMARY KEY,
  479. last_time DATE NOT NULL,
  480. wrong_count INTEGER NOT NULL,
  481. create_user_id INTEGER NOT NULL,
  482. last_answer_log_id INTEGER NOT NULL,
  483. question_id INTEGER NOT NULL
  484. );
  485. CREATE SEQUENCE seq_practise_error_book START WITH 1 INCREMENT BY 1;
  486. CREATE OR REPLACE TRIGGER tr_practise_error_book
  487. BEFORE INSERT OR UPDATE OF id ON practise_error_book
  488. FOR EACH ROW
  489. BEGIN
  490. IF ( :NEW.id = 0 OR :NEW.id IS NULL ) THEN
  491. SELECT seq_practise_error_book.NEXTVAL INTO :NEW.id FROM DUAL;
  492. END IF;
  493. END;
  494. CREATE TABLE practise_log (
  495. id INTEGER NOT NULL PRIMARY KEY,
  496. "TYPE" INTEGER NOT NULL,
  497. create_time DATE NOT NULL,
  498. submit_time DATE DEFAULT NULL,
  499. right_count INTEGER NOT NULL,
  500. wrong_count INTEGER NOT NULL,
  501. total_count INTEGER NOT NULL,
  502. begin_answer_id INTEGER DEFAULT NULL,
  503. chapter_id INTEGER DEFAULT NULL,
  504. create_user_id INTEGER NOT NULL,
  505. end_answer_id INTEGER DEFAULT NULL,
  506. subject_id INTEGER NOT NULL
  507. );
  508. CREATE SEQUENCE seq_practise_log START WITH 1 INCREMENT BY 1;
  509. CREATE OR REPLACE TRIGGER tr_practise_log
  510. BEFORE INSERT OR UPDATE OF id ON practise_log
  511. FOR EACH ROW
  512. BEGIN
  513. IF ( :NEW.id = 0 OR :NEW.id IS NULL ) THEN
  514. SELECT seq_practise_log.NEXTVAL INTO :NEW.id FROM DUAL;
  515. END IF;
  516. END;
  517. CREATE TABLE staff_department (
  518. id INTEGER NOT NULL PRIMARY KEY,
  519. name VARCHAR2(100) NOT NULL,
  520. notes VARCHAR2(500) DEFAULT NULL,
  521. parent_id INTEGER DEFAULT NULL,
  522. lft INTEGER NOT NULL,
  523. rgt INTEGER NOT NULL
  524. );
  525. CREATE SEQUENCE seq_staff_department START WITH 1 INCREMENT BY 1;
  526. CREATE OR REPLACE TRIGGER tr_staff_department
  527. BEFORE INSERT OR UPDATE OF id ON staff_department
  528. FOR EACH ROW
  529. BEGIN
  530. IF ( :NEW.id = 0 OR :NEW.id IS NULL ) THEN
  531. SELECT seq_staff_department.NEXTVAL INTO :NEW.id FROM DUAL;
  532. END IF;
  533. END;
  534. CREATE TABLE staff_user (
  535. id INTEGER NOT NULL PRIMARY KEY,
  536. password VARCHAR2(128) NOT NULL,
  537. last_login DATE DEFAULT NULL,
  538. is_superuser INTEGER NOT NULL,
  539. "TYPE" INTEGER NOT NULL,
  540. username VARCHAR2(30) NOT NULL,
  541. name VARCHAR2(30) NOT NULL,
  542. is_active INTEGER NOT NULL,
  543. date_joined DATE NOT NULL,
  544. department_id INTEGER DEFAULT NULL
  545. );
  546. CREATE SEQUENCE seq_staff_user START WITH 1 INCREMENT BY 1;
  547. CREATE OR REPLACE TRIGGER tr_staff_user
  548. BEFORE INSERT OR UPDATE OF id ON staff_user
  549. FOR EACH ROW
  550. BEGIN
  551. IF ( :NEW.id = 0 OR :NEW.id IS NULL ) THEN
  552. SELECT seq_staff_user.NEXTVAL INTO :NEW.id FROM DUAL;
  553. END IF;
  554. END;
  555. CREATE TABLE staff_user_groups (
  556. id INTEGER NOT NULL PRIMARY KEY,
  557. user_id INTEGER NOT NULL,
  558. group_id INTEGER NOT NULL
  559. );
  560. CREATE SEQUENCE seq_staff_user_groups START WITH 1 INCREMENT BY 1;
  561. CREATE OR REPLACE TRIGGER tr_staff_user_groups
  562. BEFORE INSERT OR UPDATE OF id ON staff_user_groups
  563. FOR EACH ROW
  564. BEGIN
  565. IF ( :NEW.id = 0 OR :NEW.id IS NULL ) THEN
  566. SELECT seq_staff_user_groups.NEXTVAL INTO :NEW.id FROM DUAL;
  567. END IF;
  568. END;
  569. CREATE TABLE staff_user_user_permissions (
  570. id INTEGER NOT NULL PRIMARY KEY,
  571. user_id INTEGER NOT NULL,
  572. permission_id INTEGER NOT NULL
  573. );
  574. CREATE SEQUENCE seq_staff_user_pers START WITH 1 INCREMENT BY 1;
  575. CREATE OR REPLACE TRIGGER tr_staff_user_pers
  576. BEFORE INSERT OR UPDATE OF id ON staff_user_user_permissions
  577. FOR EACH ROW
  578. BEGIN
  579. IF ( :NEW.id = 0 OR :NEW.id IS NULL ) THEN
  580. SELECT seq_staff_user_pers.NEXTVAL INTO :NEW.id FROM DUAL;
  581. END IF;
  582. END;
  583. CREATE TABLE sys_log (
  584. id INTEGER NOT NULL PRIMARY KEY,
  585. "TYPE" INTEGER NOT NULL,
  586. description VARCHAR2(1000) NOT NULL,
  587. data CLOB,
  588. create_time DATE NOT NULL,
  589. user_id INTEGER DEFAULT NULL
  590. );
  591. CREATE SEQUENCE seq_sys_log START WITH 1 INCREMENT BY 1;
  592. CREATE OR REPLACE TRIGGER tr_sys_log
  593. BEFORE INSERT OR UPDATE OF id ON sys_log
  594. FOR EACH ROW
  595. BEGIN
  596. IF ( :NEW.id = 0 OR :NEW.id IS NULL ) THEN
  597. SELECT seq_sys_log.NEXTVAL INTO :NEW.id FROM DUAL;
  598. END IF;
  599. END;