jQuery("#menuList").jqGrid({
url:'/project/menu/menuListGrid',
datatype: 'json',
mtype:'PUT',
treeGrid: true,
treeGridModel: 'adjacency',
serializeGridData: function(postData) {
return JSON.stringify(postData);
},
colNames:['ID','NAME','PATH','설명','레벨','PARENT','isLeaf'],
colModel: [
{name:'id', index:'id', width:050,
editrules:{required:true }, align:'center',key:true},
{name:'name', index:'name', width:100 ,
editrules:{required:true },editable:true},
{name:'path', index:'path', width:150 ,
editrules:{required:true },editable:true},
{name:'description', index:'description',width:150 ,
editrules:{required:true },editable:true},
{name:'level', index:'level', width:100 ,editrules:{}, align:'center'},
{name:'parent', index:'parent', width:050 ,editrules:{}, align:'center'},
{name:'isLeaf', index:'isLeaf', width:050 ,editrules:{} },
],
pager: jQuery('#pager'),
height: 'auto',
scroll: true,
prmNames: { npage: 'npage' },
autowidth : true,
gridview: true,
rowNum: 10000,
sortname: 'id',
treeGrid: true,
treeGridModel: 'adjacency',
ExpandColumn: 'name',
caption: "Menu Tree",
pagination: true,
jsonReader: {
repeatitems: false
},
editurl:"/project/menu/menuEdit",
loadComplete : function (data){
}
}).navGrid('#pager', {edit:true,add:true,del:true,search:true},
{width:600,top:100,left:300},
{width:600,top:100,left:300},
{width:600},
{width:600}
);
jQuery.extend(jQuery.jgrid.del, {
closeAfterAdd: true,
recreateForm: true,
reloadAfterSubmit: true,
left : 300,
top : 200,
mtype : 'PUT',
ajaxDelOptions: { contentType: "application/json" },
serializeDelData: function (postData) {
return JSON.stringify(postData);
},
afterComplete: function (response,postdata,formid){
if (jQuery.parseJSON(response.responseText).success){
alert ("삭제되었습니다 !");
} else {
alert ("삭제에 실패 했습니다 !");
}
}
});
jQuery.extend(jQuery.jgrid.edit, {
closeAfterAdd: true,
closeAfterEdit:true,
recreateForm: true,
reloadAfterSubmit: false,
left : 300,
top : 200,
mtype : 'PUT',
ajaxEditOptions: { contentType: "application/json" },
serializeEditData: function (postData) {
return JSON.stringify(postData);
},
afterComplete: function (response,postdata,formid){
var result = jQuery.parseJSON(response.responseText).success;
if (result){
switch (jQuery.parseJSON(response.responseText).oper){
case 'add': alert ("저장 되었습니다 !");
break;
case 'edit': alert ("수정 되었습니다 !");
break;
case 'del': alert ("삭제 되었습니다 !");
break;
}
jQuery('#menuList').trigger('reloadGrid');
} else {
}
},
afterShowForm : function (formid){
},
beforeSubmit : function(postdata, formid) {
success = true;
message = "저장되었습니다!";
return[success,message];
}
});
Java Class
@RequestMapping (value="/menuListGrid",method=RequestMethod.PUT)
public @ResponseBody String menuListGrid(@RequestBody String json)
throws JsonGenerationException,
JsonMappingException,
IOException {
HashMap<String,Object> params = new HashMap<String,Object>();
ObjectMapper mapper = new ObjectMapper();
logger.debug(json.toString());
params = mapper.readValue(json,
new TypeReference<Map<String,Object>>() { });
HashMap<String,Object> resultMap = new HashMap<String,Object>();
List<Menu> menuList = menuService.getAllMenus(params);
List<Menu> leafNode = menuService.getLeafNodes(params);
HashMap<String,Object> leafMap = new HashMap<String,Object>();
for (int i=0; i < leafNode.size(); i++){
leafMap.put(Integer.toString(leafNode.get(i).getId()),leafNode.get(i).getId());
}
ArrayList<Object> listArray = new ArrayList<Object>();
for (int i=0; i < menuList.size(); i++){
HashMap<String,Object> cellMap = new HashMap<String,Object>();
cellMap.put("id", menuList.get(i).getId());
cellMap.put("name", menuList.get(i).getName());
cellMap.put("path", menuList.get(i).getPath());
cellMap.put("description", menuList.get(i).getDescription());
cellMap.put("level", menuList.get(i).getLevelId());
cellMap.put("parent", menuList.get(i).getParent());
if (leafMap.containsKey(Integer.toString(menuList.get(i).getId()))){
System.out.println("Menu ID : " + menuList.get(i).getId() );
cellMap.put("isLeaf", true);
cellMap.put("loaded", true);
} else {
cellMap.put("isLeaf", false);
cellMap.put("expanded",false);
cellMap.put("loaded", true);
}
cellMap.put("expanded",true);
listArray.add(cellMap);
}
resultMap.put("total",menuList.size());
resultMap.put("records", menuList.size());
resultMap.put("rows", listArray);
resultMap.put("nPage", 2);
resultMap.put("page", 1);
String value = mapper.writeValueAsString(resultMap);
logger.debug(value);
return value;
}
@RequestMapping (value="/menuEdit",method=RequestMethod.PUT)
public @ResponseBody String menuEdit(@RequestBody String json)
throws IOException{
logger.debug(json.toString());
ObjectMapper mapper = new ObjectMapper();
HashMap<String, Object> params = new HashMap<String,Object>();
params = mapper.readValue(json,
new TypeReference<Map<String,Object>>() { });
logger.debug("Parameters : " + params.toString());
int resultValue = 0;
String oper = (String) params.get("oper");
logger.debug("Operation Code : " + oper);
if (oper.equals("edit")){
resultValue = menuService.updateMenu(params);
}
if (oper.equals("del")){
resultValue = menuService.deleteMenu(params);
}
if (oper.equals("add")){
resultValue = menuService.insertMenu(params);
}
logger.debug("Update Edit Result Value : " + resultValue);
if (resultValue == 1){
params.put("success", true);
} else {
params.put("success", false);
}
return mapper.writeValueAsString(params);
}
Java Service
@Service
public class MenuService {
@Autowired
private MenuMapper menuMapper;
private final Log logger = LogFactory.getLog(getClass());
public int getCount (){
return menuMapper.getCount();
}
public List<Menu> getAllMenus(HashMap<String,Object> params){
List<Menu> menusList = menuMapper.getAllMenus(params);
return menusList;
}
public Menu getMenuById(String id) throws Exception {
return (Menu)menuMapper.getMenuById(id);
}
@Transactional
public int insertMenu (HashMap<String, Object> params) {
params.put("isLeaf", "0");
if (params.containsKey("parent")){
String parent = (String) params.get("parent");
if (parent.equals("") || parent.equals(null))
if (params.get("parent") == null){
params.put("levelId" , 1);
} else {
int level = menuMapper.getParentLevel((String)
params.get("parent"));
level ++;
params.put("levelId", level);
}
}
int resultValue = menuMapper.insertMenu(params);
logger.debug("result Value : " + resultValue);
return resultValue;
}
@Transactional
public int updateMenu(HashMap<String,Object> params) {
int resultValue = menuMapper.updateMenu(params);
logger.debug("Result Value :" + resultValue);
return resultValue;
}
public int deleteMenu(HashMap<String, Object> params) {
int resultValue = 0;
try {
resultValue = menuMapper.deleteMenu(params);
} catch (PersistenceException pe) {
logger.debug(pe.getMessage());
} catch (RuntimeSqlException se){
logger.debug(se.getMessage());
logger.debug(se.toString());
} catch (Exception e){
logger.debug(e.toString());
}
return resultValue;
}
public List<Menu> getLeafNodes(HashMap<String, Object> params) {
List<Menu> menuLeafList = menuMapper.getLeafNodes(params);
return menuLeafList;
}
}
Java Mapper Interface
public interface MenuMapper {
final String LEAF_NODE =
" SELECT T1.ID ,T1.NAME,T1.LEVEL_ID FROM MENUS T1 LEFT
JOIN MENUS T2 ON T1.ID
= T2.PARENT WHERE T2.ID IS NULL";
final String SELECT_ALL = " SELECT COUNT(*) as count FROM MENUS";
final String ALL_MENU = " SELECT ID,NAME,PATH,DESCRIPTION,LEVEL_ID,
PARENT,ISLEAF FROM MENUS ";
final String GET_MENU_BY_ID = " SELECT
ID,NAME,PATH,DESCRIPTION,LEVEL_ID,PARENT,
ISLEAF FROM MENUS
WHERE ID = #{id,javaType=string,jdbcType=VARCHAR}";
final String DELETE_MENU = " DELETE FROM MENUS
WHERE ID = #{id,javaType=string,jdbcType=VARCHAR}";
@Select(SELECT_ALL)
public int getCount();
@Results({
@Result(property="levelId", column="LEVEL_ID")
})
@SelectProvider (type = com.company.project.persistence.MenuSqlBuilder.class,
method = "getAllTreeMenuSql")
public List<Menu> getAllMenus(HashMap<String,Object>params);
//@SelectProvider (type=com.company.project.persistence.MenuSqlBuilder.class,
method = "insertMenuSql")
final String INSERT_MENU = " INSERT INTO MENUS
(NAME,PATH,DESCRIPTION,LEVEL_ID,PARENT,ISLEAF) " +
" VALUES (#{name,javaType=string,jdbcType=VARCHAR}," +
" #{path,javaType=string,jdbcType=VARCHAR}," +
" #{description,javaType=string,jdbcType=VARCHAR}," +
" #{levelId,javaType=int,jdbcType=NUMERIC}," +
" #{parent,javaType=string,jdbcType=VARCHAR}," +
" #{isLeaf})";
@Insert(INSERT_MENU)
@Results({
@Result(property="levelId",column="LEVEL_ID")
})
public int insertMenu(HashMap<String, Object> params);
@Update("UPDATE MENUS SET NAME = #{name},PATH = #{path},
DESCRIPTION = #{description} where id=#{id}" )
public int updateMenu(HashMap<String,Object> params);
@Delete(DELETE_MENU)
public int deleteMenu(HashMap<String, Object> params) throws
RuntimeSqlException;
@Select(GET_MENU_BY_ID)
public Menu getMenuById(String id);
@Select(LEAF_NODE)
public List<Menu> getLeafNodes(HashMap<String, Object> params);
@Select ("SELECT MNU.LEVEL_ID AS LEVELID
FROM MENUS MNU
WHERE MNU.ID = #{id} ")
public int getParentLevel(String id);
}
Java SQLBuilder Class
public class MenuSqlBuilder {
private final Log logger = LogFactory.getLog(getClass());
public String getAllTreeMenuSql (final HashMap<String,Object> params){
logger.debug("getAllTreeMenuSql ");
String sql = " SELECT ID," +
" NAME," +
" PATH," +
" DESCRIPTION," +
" LEVEL_ID," +
" PARENT " +
" FROM MENUS " +
" START WITH PARENT IS NULL " +
" CONNECT BY PRIOR ID = PARENT " +
" ORDER SIBLINGS BY PARENT ASC, ID ASC";
return sql;
}
풀소스를 올리고 싶은데 적당한 싸이트가 없어서 아쉽습니다
Menu Domain Class
public class Menu {
private int id;
private String name;
private String path;
private String description;
private int levelId;
private String parent;
private boolean isLeaf;
생략 .. getter and setter
}
MenuExt Class
public class MenuExt extends Menu {
private int rnum;
private int totcnt;
생략 .. getter and setter
}
Oracle DB Schema
CREATE TABLE "SPRING"."MENUS"
(
"ID" NUMBER NOT NULL ENABLE,
"NAME" VARCHAR2(50 BYTE) NOT NULL ENABLE,
"PATH" VARCHAR2(50 BYTE) NOT NULL ENABLE,
"DESCRIPTION" VARCHAR2(50 BYTE),
"LEVEL_ID" NUMBER,
"PARENT" VARCHAR2(20 BYTE),
"ISLEAF" CHAR(1 BYTE) NOT NULL ENABLE,
CONSTRAINT "MENUS_PK" PRIMARY KEY ("ID") USING INDEX PCTFREE 10 INITRANS 2
MAXTRANS 255 COMPUTE STATISTICS STORAGE(INITIAL 65536 NEXT 1048576
MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST
GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" ENABLE
)
PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
STORAGE
(
INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT
)
TABLESPACE "USERS" ;
CREATE OR REPLACE TRIGGER "SPRING"."MENU_ID_TRIGGER" before
INSERT ON "SPRING"."MENUS" FOR EACH row
BEGIN IF inserting THEN
IF :NEW."ID" IS NULL THEN
SELECT MENU_SEQUENCE.nextval INTO :NEW."ID" FROM dual;
END IF;
END IF;
END;
/
ALTER TRIGGER "SPRING"."MENU_ID_TRIGGER" ENABLE;
url:'/project/menu/menuListGrid',
datatype: 'json',
mtype:'PUT',
treeGrid: true,
treeGridModel: 'adjacency',
serializeGridData: function(postData) {
return JSON.stringify(postData);
},
colNames:['ID','NAME','PATH','설명','레벨','PARENT','isLeaf'],
colModel: [
{name:'id', index:'id', width:050,
editrules:{required:true }, align:'center',key:true},
{name:'name', index:'name', width:100 ,
editrules:{required:true },editable:true},
{name:'path', index:'path', width:150 ,
editrules:{required:true },editable:true},
{name:'description', index:'description',width:150 ,
editrules:{required:true },editable:true},
{name:'level', index:'level', width:100 ,editrules:{}, align:'center'},
{name:'parent', index:'parent', width:050 ,editrules:{}, align:'center'},
{name:'isLeaf', index:'isLeaf', width:050 ,editrules:{} },
],
pager: jQuery('#pager'),
height: 'auto',
scroll: true,
prmNames: { npage: 'npage' },
autowidth : true,
gridview: true,
rowNum: 10000,
sortname: 'id',
treeGrid: true,
treeGridModel: 'adjacency',
ExpandColumn: 'name',
caption: "Menu Tree",
pagination: true,
jsonReader: {
repeatitems: false
},
editurl:"/project/menu/menuEdit",
loadComplete : function (data){
}
}).navGrid('#pager', {edit:true,add:true,del:true,search:true},
{width:600,top:100,left:300},
{width:600,top:100,left:300},
{width:600},
{width:600}
);
jQuery.extend(jQuery.jgrid.del, {
closeAfterAdd: true,
recreateForm: true,
reloadAfterSubmit: true,
left : 300,
top : 200,
mtype : 'PUT',
ajaxDelOptions: { contentType: "application/json" },
serializeDelData: function (postData) {
return JSON.stringify(postData);
},
afterComplete: function (response,postdata,formid){
if (jQuery.parseJSON(response.responseText).success){
alert ("삭제되었습니다 !");
} else {
alert ("삭제에 실패 했습니다 !");
}
}
});
jQuery.extend(jQuery.jgrid.edit, {
closeAfterAdd: true,
closeAfterEdit:true,
recreateForm: true,
reloadAfterSubmit: false,
left : 300,
top : 200,
mtype : 'PUT',
ajaxEditOptions: { contentType: "application/json" },
serializeEditData: function (postData) {
return JSON.stringify(postData);
},
afterComplete: function (response,postdata,formid){
var result = jQuery.parseJSON(response.responseText).success;
if (result){
switch (jQuery.parseJSON(response.responseText).oper){
case 'add': alert ("저장 되었습니다 !");
break;
case 'edit': alert ("수정 되었습니다 !");
break;
case 'del': alert ("삭제 되었습니다 !");
break;
}
jQuery('#menuList').trigger('reloadGrid');
} else {
}
},
afterShowForm : function (formid){
},
beforeSubmit : function(postdata, formid) {
success = true;
message = "저장되었습니다!";
return[success,message];
}
});
Java Class
@RequestMapping (value="/menuListGrid",method=RequestMethod.PUT)
public @ResponseBody String menuListGrid(@RequestBody String json)
throws JsonGenerationException,
JsonMappingException,
IOException {
HashMap<String,Object> params = new HashMap<String,Object>();
ObjectMapper mapper = new ObjectMapper();
logger.debug(json.toString());
params = mapper.readValue(json,
new TypeReference<Map<String,Object>>() { });
HashMap<String,Object> resultMap = new HashMap<String,Object>();
List<Menu> menuList = menuService.getAllMenus(params);
List<Menu> leafNode = menuService.getLeafNodes(params);
HashMap<String,Object> leafMap = new HashMap<String,Object>();
for (int i=0; i < leafNode.size(); i++){
leafMap.put(Integer.toString(leafNode.get(i).getId()),leafNode.get(i).getId());
}
ArrayList<Object> listArray = new ArrayList<Object>();
for (int i=0; i < menuList.size(); i++){
HashMap<String,Object> cellMap = new HashMap<String,Object>();
cellMap.put("id", menuList.get(i).getId());
cellMap.put("name", menuList.get(i).getName());
cellMap.put("path", menuList.get(i).getPath());
cellMap.put("description", menuList.get(i).getDescription());
cellMap.put("level", menuList.get(i).getLevelId());
cellMap.put("parent", menuList.get(i).getParent());
if (leafMap.containsKey(Integer.toString(menuList.get(i).getId()))){
System.out.println("Menu ID : " + menuList.get(i).getId() );
cellMap.put("isLeaf", true);
cellMap.put("loaded", true);
} else {
cellMap.put("isLeaf", false);
cellMap.put("expanded",false);
cellMap.put("loaded", true);
}
cellMap.put("expanded",true);
listArray.add(cellMap);
}
resultMap.put("total",menuList.size());
resultMap.put("records", menuList.size());
resultMap.put("rows", listArray);
resultMap.put("nPage", 2);
resultMap.put("page", 1);
String value = mapper.writeValueAsString(resultMap);
logger.debug(value);
return value;
}
@RequestMapping (value="/menuEdit",method=RequestMethod.PUT)
public @ResponseBody String menuEdit(@RequestBody String json)
throws IOException{
logger.debug(json.toString());
ObjectMapper mapper = new ObjectMapper();
HashMap<String, Object> params = new HashMap<String,Object>();
params = mapper.readValue(json,
new TypeReference<Map<String,Object>>() { });
logger.debug("Parameters : " + params.toString());
int resultValue = 0;
String oper = (String) params.get("oper");
logger.debug("Operation Code : " + oper);
if (oper.equals("edit")){
resultValue = menuService.updateMenu(params);
}
if (oper.equals("del")){
resultValue = menuService.deleteMenu(params);
}
if (oper.equals("add")){
resultValue = menuService.insertMenu(params);
}
logger.debug("Update Edit Result Value : " + resultValue);
if (resultValue == 1){
params.put("success", true);
} else {
params.put("success", false);
}
return mapper.writeValueAsString(params);
}
Java Service
@Service
public class MenuService {
@Autowired
private MenuMapper menuMapper;
private final Log logger = LogFactory.getLog(getClass());
public int getCount (){
return menuMapper.getCount();
}
public List<Menu> getAllMenus(HashMap<String,Object> params){
List<Menu> menusList = menuMapper.getAllMenus(params);
return menusList;
}
public Menu getMenuById(String id) throws Exception {
return (Menu)menuMapper.getMenuById(id);
}
@Transactional
public int insertMenu (HashMap<String, Object> params) {
params.put("isLeaf", "0");
if (params.containsKey("parent")){
String parent = (String) params.get("parent");
if (parent.equals("") || parent.equals(null))
if (params.get("parent") == null){
params.put("levelId" , 1);
} else {
int level = menuMapper.getParentLevel((String)
params.get("parent"));
level ++;
params.put("levelId", level);
}
}
int resultValue = menuMapper.insertMenu(params);
logger.debug("result Value : " + resultValue);
return resultValue;
}
@Transactional
public int updateMenu(HashMap<String,Object> params) {
int resultValue = menuMapper.updateMenu(params);
logger.debug("Result Value :" + resultValue);
return resultValue;
}
public int deleteMenu(HashMap<String, Object> params) {
int resultValue = 0;
try {
resultValue = menuMapper.deleteMenu(params);
} catch (PersistenceException pe) {
logger.debug(pe.getMessage());
} catch (RuntimeSqlException se){
logger.debug(se.getMessage());
logger.debug(se.toString());
} catch (Exception e){
logger.debug(e.toString());
}
return resultValue;
}
public List<Menu> getLeafNodes(HashMap<String, Object> params) {
List<Menu> menuLeafList = menuMapper.getLeafNodes(params);
return menuLeafList;
}
}
Java Mapper Interface
public interface MenuMapper {
final String LEAF_NODE =
" SELECT T1.ID ,T1.NAME,T1.LEVEL_ID FROM MENUS T1 LEFT
JOIN MENUS T2 ON T1.ID
= T2.PARENT WHERE T2.ID IS NULL";
final String SELECT_ALL = " SELECT COUNT(*) as count FROM MENUS";
final String ALL_MENU = " SELECT ID,NAME,PATH,DESCRIPTION,LEVEL_ID,
PARENT,ISLEAF FROM MENUS ";
final String GET_MENU_BY_ID = " SELECT
ID,NAME,PATH,DESCRIPTION,LEVEL_ID,PARENT,
ISLEAF FROM MENUS
WHERE ID = #{id,javaType=string,jdbcType=VARCHAR}";
final String DELETE_MENU = " DELETE FROM MENUS
WHERE ID = #{id,javaType=string,jdbcType=VARCHAR}";
@Select(SELECT_ALL)
public int getCount();
@Results({
@Result(property="levelId", column="LEVEL_ID")
})
@SelectProvider (type = com.company.project.persistence.MenuSqlBuilder.class,
method = "getAllTreeMenuSql")
public List<Menu> getAllMenus(HashMap<String,Object>params);
//@SelectProvider (type=com.company.project.persistence.MenuSqlBuilder.class,
method = "insertMenuSql")
final String INSERT_MENU = " INSERT INTO MENUS
(NAME,PATH,DESCRIPTION,LEVEL_ID,PARENT,ISLEAF) " +
" VALUES (#{name,javaType=string,jdbcType=VARCHAR}," +
" #{path,javaType=string,jdbcType=VARCHAR}," +
" #{description,javaType=string,jdbcType=VARCHAR}," +
" #{levelId,javaType=int,jdbcType=NUMERIC}," +
" #{parent,javaType=string,jdbcType=VARCHAR}," +
" #{isLeaf})";
@Insert(INSERT_MENU)
@Results({
@Result(property="levelId",column="LEVEL_ID")
})
public int insertMenu(HashMap<String, Object> params);
@Update("UPDATE MENUS SET NAME = #{name},PATH = #{path},
DESCRIPTION = #{description} where id=#{id}" )
public int updateMenu(HashMap<String,Object> params);
@Delete(DELETE_MENU)
public int deleteMenu(HashMap<String, Object> params) throws
RuntimeSqlException;
@Select(GET_MENU_BY_ID)
public Menu getMenuById(String id);
@Select(LEAF_NODE)
public List<Menu> getLeafNodes(HashMap<String, Object> params);
@Select ("SELECT MNU.LEVEL_ID AS LEVELID
FROM MENUS MNU
WHERE MNU.ID = #{id} ")
public int getParentLevel(String id);
}
Java SQLBuilder Class
public class MenuSqlBuilder {
private final Log logger = LogFactory.getLog(getClass());
public String getAllTreeMenuSql (final HashMap<String,Object> params){
logger.debug("getAllTreeMenuSql ");
String sql = " SELECT ID," +
" NAME," +
" PATH," +
" DESCRIPTION," +
" LEVEL_ID," +
" PARENT " +
" FROM MENUS " +
" START WITH PARENT IS NULL " +
" CONNECT BY PRIOR ID = PARENT " +
" ORDER SIBLINGS BY PARENT ASC, ID ASC";
return sql;
}
풀소스를 올리고 싶은데 적당한 싸이트가 없어서 아쉽습니다
Menu Domain Class
public class Menu {
private int id;
private String name;
private String path;
private String description;
private int levelId;
private String parent;
private boolean isLeaf;
생략 .. getter and setter
}
MenuExt Class
public class MenuExt extends Menu {
private int rnum;
private int totcnt;
생략 .. getter and setter
}
Oracle DB Schema
CREATE TABLE "SPRING"."MENUS"
(
"ID" NUMBER NOT NULL ENABLE,
"NAME" VARCHAR2(50 BYTE) NOT NULL ENABLE,
"PATH" VARCHAR2(50 BYTE) NOT NULL ENABLE,
"DESCRIPTION" VARCHAR2(50 BYTE),
"LEVEL_ID" NUMBER,
"PARENT" VARCHAR2(20 BYTE),
"ISLEAF" CHAR(1 BYTE) NOT NULL ENABLE,
CONSTRAINT "MENUS_PK" PRIMARY KEY ("ID") USING INDEX PCTFREE 10 INITRANS 2
MAXTRANS 255 COMPUTE STATISTICS STORAGE(INITIAL 65536 NEXT 1048576
MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST
GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" ENABLE
)
PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
STORAGE
(
INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT
)
TABLESPACE "USERS" ;
CREATE OR REPLACE TRIGGER "SPRING"."MENU_ID_TRIGGER" before
INSERT ON "SPRING"."MENUS" FOR EACH row
BEGIN IF inserting THEN
IF :NEW."ID" IS NULL THEN
SELECT MENU_SEQUENCE.nextval INTO :NEW."ID" FROM dual;
END IF;
END IF;
END;
/
ALTER TRIGGER "SPRING"."MENU_ID_TRIGGER" ENABLE;
'웹스토리 > Jquery,Js' 카테고리의 다른 글
FLEXGRID 설명 (0) | 2014.02.12 |
---|---|
jqgrid 옵션 정보 (0) | 2013.11.27 |
윈도우 팝업창 뛰우기 스크립트 (0) | 2013.08.19 |
브라우저 체크, 익스플로러 버전체크 (0) | 2013.07.29 |
외부 url을 호출하여 div에 넣기 (0) | 2013.07.23 |